Cryptology Academy · Lektion

JWT-sårbarheter: alg=none och nyckelförväxling

Utnyttja och åtgärda de vanligaste säkerhetsmisstagen med JWT.

Lektion 3 av 413 steg

JWT-sårbarheter: alg=none och nyckelförväxling är en gratis lektion i Cryptology Academy på CoddyKit. Detta är lektion 3 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Cryptology Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

JWT:ers attackyta

JWT:er är kryptografiskt signerade, men många bibliotek har haft allvarliga sårbarheter. De mest utnyttjade är attacken alg=none, förväxlingsattacken RS256→HS256 och brute force-angrepp mot svaga hemligheter. Alla beror på att man litar på headerfält som angriparen styr.

alg=none-attack

JWT-specifikationen tillåter alg:"none" för osignerade token. Bristfälliga bibliotek accepterade detta och hoppade helt över signaturverifieringen. En angripare ändrar payloaden (t.ex. "role":"admin"), anger alg:"none", tar bort signaturen och servern godkänner token.

Exempel på alg=none-exploatering

Original: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIn0.SIG Attack: eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9. (tom signatur, avslutande punkt). En sårbar server verifierar token framgångsrikt och beviljar administratörsåtkomst.

Åtgärd mot alg=none

Acceptera aldrig alg:"none" i produktion. Vitlista uttryckligen tillåtna algoritmer: jwt.decode(token, key, algorithms=["HS256"]). De flesta moderna bibliotek (PyJWT 2+, jsonwebtoken 9+) avvisar alg=none som standard.

RS256 → HS256-nyckelförväxling

Om en server använder RS256 och en klient ändrar alg till HS256 kan servern verifiera med sin publika RSA-nyckel som HMAC-hemlighet. Eftersom den publika nyckeln är ... offentlig kan angriparen signera godtyckliga payloadar med den, och servern verifierar dem.

Exploatering av nyckelförväxling

Steg: 1) Hämta den publika nyckeln från JWKS-endpointen. 2) Skapa en skadlig payload. 3) Signera med HMAC-SHA256 med de råa PEM-bytena från den publika nyckeln som HMAC-hemlighet. 4) Ange alg:"HS256" i headern. 5) Serverns HS256-kodväg verifierar token framgångsrikt.

Åtgärd mot nyckelförväxling

Ange alltid den förväntade algoritmen explicit i verifieringsanropet. Härled aldrig algoritmen från token-headern. Använd separata kodvägar för RS256 och HS256 som inte kan växlas av anroparen.

Brute force-angrepp mot svaga hemligheter

HS256 med svaga hemligheter (mindre än 256 bitars entropi) kan knäckas offline med brute force. Verktyg som hashcat stöder JWT-knäckning: hashcat -a 0 -m 16500 token.txt wordlist.txt. Använd kryptografiskt slumpmässiga hemligheter på minst 32 byte.

Headerinjektion via kid

kid-headern (nyckel-ID:t) väljer vilken nyckel som ska användas. Om servern använder kid som parameter i en SQL-fråga eller som filsökväg utan sanering: kid="../../dev/null" → HMAC med en tom nyckel → förfalskad token godkänns. Sanera alltid kid.

jwk-headerinjektion

jwk-headern bäddar in en publik nyckel för verifiering. En sårbar server kan använda den inbäddade nyckeln direkt, vilket låter angriparen tillhandahålla sitt eget nyckelpar, signera token med den privata nyckeln och bädda in den publika nyckeln. Verifiera endast mot registrerade nycklar.

Kringgående av utgångna token

Vissa implementationer glömde att kontrollera exp-anspråket eller använde serverns klocka inkonsekvent. Validera alltid exp, nbf och iat explicit. Använd ett bibliotek som kontrollerar dessa som standard och inaktivera aldrig validering av anspråk i produktion.

Snabbkontroll

Vad använder angriparen som HMAC-hemlighet i RS256→HS256-nyckelförväxlingsattacken?

Sammanfattning

JWT-sårbarheter uppstår genom att man litar på alg-headern, accepterar alg=none och använder svaga hemligheter. Åtgärd: lås fast algoritmerna hos verifieraren, använd starka hemligheter och sanera kid. Nästa steg: säkra metoder för JWT-implementation.

Gratis att börja

Lär dig Cryptology Academy med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
67
Lektioner
261

Vanliga frågor

Är lektionen ”JWT-sårbarheter: alg=none och nyckelförväxling” gratis?

Ja – hela texten till ”JWT-sårbarheter: alg=none och nyckelförväxling” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Cryptology Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Cryptology Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”JWT-sårbarheter: alg=none och nyckelförväxling”?

Utnyttja och åtgärda de vanligaste säkerhetsmisstagen med JWT. Ni övar på Cryptology Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Cryptology Academy?

Du behöver inga förkunskaper. Utbildningen i Cryptology Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 3 av 4.

Hur lång tid tar lektionen ”JWT-sårbarheter: alg=none och nyckelförväxling”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Cryptology Academy-lektionen?

Ja. Varje Cryptology Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. JWT:s uppbyggnad: header, payload och signatur
  2. HS256 jämfört med RS256: symmetriska och asymmetriska JWT:er
  3. JWT-sårbarheter: alg=none och nyckelförväxling
  4. Bästa praxis för säker JWT-implementation
← Tillbaka till Cryptology Academy