JWT-Schwachstellen: alg=none und Schlüsselverwechslung
Nutzen Sie die häufigsten JWT-Sicherheitsfehler aus und beheben Sie sie.
JWT-Schwachstellen: alg=none und Schlüsselverwechslung ist eine kostenlose Cryptology Academy-Lektion auf CoddyKit. Dies ist Lektion 3 von 4. Du kannst die komplette Lektion unten kostenlos lesen – dann übst du sie direkt im Browser mit einem integrierten Code-Editor und einem KI-Tutor rund um die Uhr. Sie ist Teil des Cryptology Academy-Lernpfads, und dein Fortschritt wird über Web und CoddyKit-App synchronisiert. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Angriffsfläche von JWT
JWTs sind kryptografisch signiert, doch viele Bibliotheken wiesen schwerwiegende Schwachstellen auf. Am häufigsten ausgenutzt wurden der alg=none-Angriff, der RS256→HS256-Verwechslungangriff und das Brute-Forcing schwacher Geheimnisse. Allen liegt das Vertrauen in vom Angreifer kontrollierte Header-Felder zugrunde.
alg=none-Angriff
Die JWT-Spezifikation erlaubt alg:"none" für nicht geschützte Token. Fehlerhafte Bibliotheken akzeptierten dies und übersprangen die Signaturprüfung vollständig. Ein Angreifer verändert die Nutzdaten (z. B. "role":"admin"), setzt alg:"none", entfernt die Signatur, und der Server akzeptiert das Token.
Beispiel für einen alg=none-Exploit
Original: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIn0.SIG Angriff: eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9. (leere Signatur, abschließender Punkt). Ein verwundbarer Server verifiziert das Token erfolgreich und gewährt Administratorzugriff.
Behebung von alg=none
Akzeptieren Sie alg:"none" niemals in der Produktion. Lassen Sie nur ausdrücklich erlaubte Algorithmen zu: jwt.decode(token, key, algorithms=["HS256"]). Die meisten modernen Bibliotheken (PyJWT 2+, jsonwebtoken 9+) lehnen alg=none standardmäßig ab.
RS256 → HS256-Schlüsselverwechslung
Wenn ein Server RS256 verwendet und ein Client alg in HS256 ändert, könnte der Server seinen öffentlichen RSA-Schlüssel als HMAC-Geheimnis verwenden. Da der öffentliche Schlüssel ... öffentlich ist, signiert der Angreifer damit beliebige Nutzdaten, und der Server verifiziert sie.
Exploit der Schlüsselverwechslung
Schritte: 1) Rufen Sie den öffentlichen Schlüssel vom JWKS-Endpunkt ab. 2) Erstellen Sie schädliche Nutzdaten. 3) Signieren Sie sie mit HMAC-SHA256 und den unveränderten PEM-Bytes des öffentlichen Schlüssels als HMAC-Geheimnis. 4) Setzen Sie alg:"HS256" im Header. 5) Der HS256-Pfad des Servers verifiziert das Token erfolgreich.
Behebung der Schlüsselverwechslung
Geben Sie den erwarteten Algorithmus im Verifizierungsaufruf immer ausdrücklich an. Leiten Sie den Algorithmus niemals aus dem Token-Header ab. Verwenden Sie getrennte Codepfade für RS256 und HS256, die vom Aufrufer nicht umgeschaltet werden können.
Brute-Force-Angriff auf schwache Geheimnisse
HS256 mit schwachen Geheimnissen (weniger als 256 Bit Entropie) kann offline per Brute-Force angegriffen werden. Tools wie hashcat unterstützen das Knacken von JWTs: hashcat -a 0 -m 16500 token.txt wordlist.txt. Verwenden Sie kryptografisch zufällige Geheimnisse mit mindestens 32 Byte.
Header-Injection über kid
Der kid-Header bestimmt, welcher Schlüssel verwendet wird. Wenn der Server kid ohne Bereinigung als SQL-Abfrageparameter oder Dateisystempfad verwendet: kid="../../dev/null" → HMAC mit leerem Schlüssel → gefälschtes Token wird akzeptiert. Bereinigen Sie kid immer.
jwk-Header-Injection
Der jwk-Header bettet einen öffentlichen Schlüssel zur Verifizierung ein. Ein verwundbarer Server könnte den eingebetteten Schlüssel direkt verwenden, sodass der Angreifer sein eigenes Schlüsselpaar bereitstellt, das Token mit dem privaten Schlüssel signiert und den öffentlichen Schlüssel einbettet. Verifizieren Sie ausschließlich gegen registrierte Schlüssel.
Umgehung abgelaufener Token
Manche Implementierungen vergaßen, den exp-Claim zu prüfen, oder verwendeten die Serverzeit uneinheitlich. Validieren Sie exp, nbf und iat immer ausdrücklich. Verwenden Sie eine Bibliothek, die diese Claims standardmäßig prüft, und deaktivieren Sie die Claim-Validierung niemals in der Produktion.
Kurztest
Was verwendet der Angreifer beim RS256→HS256-Schlüsselverwechslungsangriff als HMAC-Geheimnis?
Zusammenfassung
JWT-Schwachstellen entstehen durch das Vertrauen in den alg-Header, die Akzeptanz von alg=none und schwache Geheimnisse. Lösung: Legen Sie die Algorithmen beim Verifizierer fest, verwenden Sie starke Geheimnisse und bereinigen Sie kid. Als Nächstes: sichere Verfahren zur Implementierung von JWTs.
Lerne Cryptology Academy mit einem KI-Tutor — kostenlos
Schreibe und führe echten Code in deinem Browser aus, bekomme sofortige Hilfe von einem 24/7 KI-Tutor und setze dein Lernen im Web oder in der App fort.
- Kurse
- 67
- Lektionen
- 261
Häufig gestellte Fragen
Ist die Lektion „JWT-Schwachstellen: alg=none und Schlüsselverwechslung“ kostenlos?
Ja — der vollständige Text von „JWT-Schwachstellen: alg=none und Schlüsselverwechslung“ ist hier im Web kostenlos zu lesen. Um sie interaktiv zu üben (integrierter Code-Editor und 24/7 KI-Tutor) und den Rest des Cryptology Academy-Kurses freizuschalten, upgrade auf CoddyKit PRO. Der Cryptology Academy-Kurs umfasst insgesamt 4 Lektionen.
Was lerne ich in „JWT-Schwachstellen: alg=none und Schlüsselverwechslung“?
Nutzen Sie die häufigsten JWT-Sicherheitsfehler aus und beheben Sie sie. Du übst Cryptology Academy mit praktischem Code, den du direkt im Browser ausführst, und ein 24/7 KI-Tutor beantwortet deine Fragen während du die Lektion bearbeitest.
Brauche ich Erfahrung, um Cryptology Academy zu starten?
Keine Vorkenntnisse erforderlich. Cryptology Academy auf CoddyKit ist für Anfänger bis fortgeschrittene Lernende strukturiert, sodass du hier starten oder von Anfang an beginnen und in deinem eigenen Tempo voranschreiten kannst. Dies ist Lektion 3 von 4.
Wie lange dauert die Lektion „JWT-Schwachstellen: alg=none und Schlüsselverwechslung“?
Die meisten CoddyKit-Lektionen dauern etwa 5–10 Minuten. Jede ist kompakt und interaktiv, sodass du stetig Fortschritte machst und genau dort weitermachst, wo du aufgehört hast – im Web und in der App.
Kann ich in dieser Cryptology Academy-Lektion Code schreiben und ausführen?
Ja. Jede Cryptology Academy-Lektion enthält einen integrierten Code-Editor, sodass du echten Code direkt in deinem Browser schreibst und ausführst und sofort KI-Feedback erhältst — ohne lokale Einrichtung erforderlich.
Alle Lektionen in diesem Kurs
- JWT-Aufbau: Header, Payload, Signatur
- HS256 vs. RS256: symmetrische und asymmetrische JWTs
- JWT-Schwachstellen: alg=none und Schlüsselverwechslung
- Best Practices für die sichere JWT-Implementierung