
Questo progetto dimostra la vulnerabilità CVE-2022-21449, che riguarda la verifica delle firme ECDSA di Java. La vulnerabilità consente a un attore malintenzionato di aggirare la verifica della firma utilizzando una firma con valori zero (r=0 e s=0). Il progetto utilizza token JWT reali e falsi con firme EC per mostrare il problema su Java 17 senza la patch di sicurezza.
r=0, s=0).JwtGenerator: genera token JWT reali e falsi.JwtUtils: valida i token JWT utilizzando una chiave EC pubblica.SecurityConfig: configura Spring Security per dimostrare l'autenticazione basata su token.ProtectedController: fornisce endpoint per testare il controllo degli accessi basato su token.JwtGeneratorLa classe JwtGenerator è un'applicazione console autonoma che genera e stampa sia token JWT validi che falsi.
Compila il Progetto:
mvn clean install
Esegui la Classe JwtGenerator:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Output: L'applicazione stamperà:
Esempio:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Usa i Token:
Avvia l'Applicazione:
mvn spring-boot:run
Accedi agli Endpoint Protetti:
/protected/user o /protected/admin.Endpoint:
/protected/user: richiede il ruolo USER o ADMIN./protected/admin: richiede il ruolo ADMIN.Questo progetto è concesso in licenza sotto la Licenza MIT.