
Образовательная демонстрация обхода подписи ECDSA в Java для CVE-2022-21449 с использованием реальных и поддельных JWT-токенов для иллюстрации уязвимости и её влияния на аутентификацию.
Этот проект демонстрирует уязвимость CVE-2022-21449, которая затрагивает проверку подписи ECDSA в Java. Уязвимость позволяет злоумышленнику обойти проверку подписи, используя подпись с нулевыми значениями (r=0 и s=0). В проекте используются реальные и поддельные JWT-токены с EC-подписями для демонстрации проблемы на Java 17 без патча безопасности.
r=0, s=0).JwtGenerator: Генерирует реальные и поддельные JWT-токены.JwtUtils: Проверяет JWT-токены с помощью открытого EC-ключа.SecurityConfig: Настраивает Spring Security для демонстрации аутентификации на основе токенов.ProtectedController: Предоставляет конечные точки для тестирования контроля доступа на основе токенов.JwtGeneratorКласс JwtGenerator — это автономное консольное приложение, которое генерирует и выводит как действительные, так и поддельные JWT-токены.
Соберите проект:
mvn clean install
Запустите класс JwtGenerator:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Вывод: Приложение выведет:
Пример:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Используйте токены:
Запустите приложение:
mvn spring-boot:run
Доступ к защищенным конечным точкам:
/protected/user или /protected/admin.Конечные точки:
/protected/user: Требуется роль USER или ADMIN./protected/admin: Требуется роль ADMIN.Этот проект распространяется под лицензией MIT.