
Lehrreiche Demo von CVE-2022-21449 Java ECDSA-Signatur-Bypass mit echten und gefälschten JWT-Tokens, um die Schwachstelle und ihre Auswirkungen auf die Authentifizierung zu veranschaulichen.
Dieses Projekt demonstriert die Sicherheitslücke CVE-2022-21449, die die ECDSA-Signaturprüfung von Java betrifft. Die Sicherheitslücke ermöglicht es einem Angreifer, die Signaturprüfung zu umgehen, indem eine Signatur mit Nullwerten (r=0 und s=0) verwendet wird. Das Projekt verwendet echte und gefälschte JWT-Tokens mit EC-Signaturen, um das Problem auf Java 17 ohne den Sicherheitspatch zu veranschaulichen.
r=0, s=0).JwtGenerator: Erzeugt echte und gefälschte JWT-Tokens.JwtUtils: Validiert JWT-Tokens mithilfe eines öffentlichen EC-Schlüssels.SecurityConfig: Konfiguriert Spring Security, um tokenbasierte Authentifizierung zu demonstrieren.ProtectedController: Stellt Endpunkte bereit, um die tokenbasierte Zugriffskontrolle zu testen.JwtGeneratorDie Klasse JwtGenerator ist eine eigenständige Konsolenanwendung, die sowohl gültige als auch gefälschte JWT-Tokens erzeugt und ausgibt.
Projekt erstellen:
mvn clean install
Die Klasse JwtGenerator ausführen:
mvn exec:java -Dexec.mainClass="com.symphony_solutions.demo.util.JwtGenerator"
Ausgabe: Die Anwendung gibt Folgendes aus:
Beispiel:
=== Valid JWT ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJhbGljZSIsInJvbGVzIjpbIkFETUlOIiwiVVNFUiJdLCJpYXQiOjE2NzAwMDAwMDAsImV4cCI6MTY3MDAzNjAwMH0.<signature>
=== Fake JWT with zero signature ===
eyJhbGciOiJFUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiJib2IiLCJyb2xlcyI6WyJBRE1JTiIsIlVTRVIiXSwiaWF0IjoxNjcwMDAwMDAwLCJleHAiOjE2NzAwMzYwMDB9.<zeroed_signature>
Tokens verwenden:
Anwendung starten:
mvn spring-boot:run
Geschützte Endpunkte aufrufen:
/protected/user oder /protected/admin zuzugreifen.Endpunkte:
/protected/user: Erfordert die Rolle USER oder ADMIN./protected/admin: Erfordert die Rolle ADMIN.Dieses Projekt ist unter der MIT-Lizenz lizenziert.