
Démo éducative du contournement de signature ECDSA Java CVE-2022-21449 utilisant des jetons JWT réels et faux pour illustrer la vulnérabilité et son impact sur l'authentification.
Ce projet démontre la vulnérabilité CVE-2022-21449, qui affecte la vérification de signature ECDSA de Java. La vulnérabilité permet à un acteur malveillant de contourner la vérification de signature en utilisant une signature avec des valeurs nulles (r=0 et s=0). Le projet utilise des jetons JWT réels et faux avec des signatures EC pour illustrer le problème sur Java 17 sans le correctif de sécurité.
r=0, s=0).JwtGenerator : Génère des jetons JWT réels et factices.JwtUtils : Valide les jetons JWT à l'aide d'une clé EC publique.SecurityConfig : Configure Spring Security pour démontrer l'authentification basée sur les jetons.ProtectedController : Fournit des points de terminaison pour tester le contrôle d'accès basé sur les jetons.JwtGeneratorLa classe JwtGenerator est une application console autonome qui génère et imprime à la fois des jetons JWT valides et factices.
Construire le projet :
mvn clean install
Exécuter la classe JwtGenerator :
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Sortie : L'application imprimera :
Exemple :
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Utiliser les jetons :
Démarrer l'application :
mvn spring-boot:run
Accéder aux points de terminaison protégés :
/protected/user ou /protected/admin.Points de terminaison :
/protected/user : nécessite le rôle USER ou ADMIN./protected/admin : nécessite le rôle ADMIN.Ce projet est sous licence MIT.