Algorithm Confusion
Auch bekannt als:Algorithmusverwechslung · Key Confusion
Algorithm Confusion: Angriff, bei dem der Prüfer einen vom Angreifer gewählten Signaturalgorithmus akzeptiert. Bekannt geworden ist die Klasse an JSON Web TokensJSON Web TokenKompaktes, signierbares Token zur Übertragung von Identitäts- und Berechtigungsinformationen., deren Header den Algorithmus selbst benennt.
Funktionsweise und Einordnung
Ein JWT trägt seinen Algorithmus im Feld alg — also in genau dem Teil, den der Angreifer kontrolliert. Liest die prüfende Bibliothek diesen Wert, statt ihn serverseitig festzulegen, lässt sich die Verifikation umdeuten. Der klassische Fall wechselt von RS256 auf HS256: Der Server signiert eigentlich asymmetrisch mit einem privaten Schlüssel, verifiziert nun aber symmetrisch — mit dem öffentlichen Schlüssel als HMAC-Geheimnis. Da dieser Schlüssel per Definition öffentlich ist, kann der Angreifer beliebige Ansprüche selbst signieren. Die Variante alg: none verzichtet gleich ganz auf eine Signatur.
Bedeutung in der Praxis
Der Schutz ist eindeutig und billig: Der erlaubte Algorithmus wird serverseitig festgelegt und beim Verifizieren explizit übergeben, Schlüssel werden pro Verfahren getrennt gehalten. Ein exponierter öffentlicher Schlüssel ist bei korrekter Implementierung unproblematisch — erst die Verwechslung macht ihn zum Angriffsvektor. Beim Testen ist außerdem das exakte Byte-Format des Schlüssels entscheidend, da der Server genau die Repräsentation als Geheimnis nutzt, die er selbst einliest.
Verwandte Begriffe
- JSON Web TokenJSON Web TokenKompaktes, signierbares Token zur Übertragung von Identitäts- und Berechtigungsinformationen.: Kompaktes, signierbares Token zur Übertragung von Identitäts- und Berechtigungsinformationen.
- Digital SignatureDigital SignatureKryptografischer Nachweis für Authentizität und Integrität digitaler Daten.: Kryptografischer Nachweis für Authentizität und Integrität digitaler Daten.
- AuthenticationAuthenticationÜberprüfung der behaupteten Identität eines Benutzers oder Systems.: Überprüfung der behaupteten Identität eines Benutzers oder Systems.
- Cryptographic AlgorithmCryptographic AlgorithmFormal definierte Berechnung für Verschlüsselung, Signaturen, Hashing oder Schlüsselaushandlung.: Formal definierte Berechnung für Verschlüsselung, Signaturen, Hashing oder Schlüsselaushandlung.