
Demonstração educacional do CVE-2022-21449 de bypass de assinatura ECDSA em Java usando tokens JWT reais e falsos para ilustrar a vulnerabilidade e seu impacto na autenticação.
Este projeto demonstra a vulnerabilidade CVE-2022-21449, que afeta a verificação de assinaturas ECDSA do Java. A vulnerabilidade permite que um ator malicioso burle a verificação de assinatura usando uma assinatura com valores zero (r=0 e s=0). O projeto utiliza tokens JWT reais e falsos com assinaturas EC para demonstrar o problema no Java 17 sem o patch de segurança.
r=0, s=0).JwtGenerator: Gera tokens JWT reais e falsos.JwtUtils: Valida tokens JWT usando uma chave EC pública.SecurityConfig: Configura o Spring Security para demonstrar autenticação baseada em token.ProtectedController: Fornece endpoints para testar controle de acesso baseado em token.JwtGeneratorA classe JwtGenerator é um aplicativo de console independente que gera e imprime tokens JWT válidos e falsos.
Construa o Projeto:
mvn clean install
Execute a Classe JwtGenerator:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Saída: O aplicativo imprimirá:
Exemplo:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Use os Tokens:
Inicie o Aplicativo:
mvn spring-boot:run
Acesse Endpoints Protegidos:
/protected/user ou /protected/admin.Endpoints:
/protected/user: Requer papel USER ou ADMIN./protected/admin: Requer papel ADMIN.Este projeto está licenciado sob a Licença MIT.