Impactul atacatorului
Validarea necorespunzătoare a JWT permite atacatorilor să ocolească mecanismele de autentificare falsificând revendicări sau reutilizand jetoane expirate [S1]. Dacă un server acceptă jetoane fără o semnătură validă, un atacator poate modifica sarcina utilă pentru a escalada privilegiile sau a uzurpa identitatea oricărui utilizator [S1]. În plus, nerespectarea cererii de expirare (exp) permite unui atacator să folosească un token compromis pe termen nelimitat [S1].
Cauza fundamentală
Un simbol web JSON (JWT) este o structură bazată pe JSON utilizată pentru a reprezenta revendicări semnate digital sau protejate cu integritatea [S1]. Eșecurile de securitate provin de obicei din două lacune principale de implementare:
- Acceptarea JWT nesecurizate: Dacă un serviciu nu impune strict verificarea semnăturii, poate procesa „JWT nesecurizate” în cazul în care semnătura este absentă și algoritmul este setat la „niciunul” [S1]. În acest scenariu, serverul are încredere în revendicările în sarcina utilă fără a verifica integritatea acestora [S1].
- Lipsă validarea revendicării: revendicarea
exp(timpul de expirare) identifică momentul în care sau după care JWT nu trebuie acceptat pentru procesarea [S1]. Revendicareaaud(publicul) identifică destinatarii vizați ai simbolului [S1]. Dacă acestea nu sunt bifate, serverul poate accepta token-uri care au expirat sau au fost destinate unei aplicații diferite [S1].
Remedieri concrete
- Implementarea semnăturilor criptografice: Configurați aplicația pentru a respinge orice JWT care nu utilizează un algoritm de semnare puternic, preaprobat (cum ar fi RS256).
- Validați expirarea: implementați o verificare obligatorie pentru a vă asigura că data și ora curente sunt înainte de ora specificată în revendicarea
exp[S1]. - Verificați publicul: asigurați-vă că revendicarea
audconține o valoare care identifică serviciul local; dacă serviciul nu este identificat în revendicareaaud, jetonul trebuie respins [S1]. - Preveniți reluarea: utilizați revendicarea
jti(ID-ul JWT) pentru a atribui un identificator unic fiecărui jeton, permițând serverului să urmărească și să respingă jetonele reutilizate [S1].
Strategia de detectare
Vulnerabilitățile în gestionarea JWT pot fi identificate prin analiza structurii token-ului și a comportamentului de răspuns al serverului:
- Inspecție antet: verificarea antetului
alg(algoritm) pentru a vă asigura că nu este setat la „niciunul” și că utilizează standardele criptografice așteptate [S1]. - Verificarea revendicării: Confirmarea prezenței și validității revendicărilor
exp(expirare) șiaud(public) în sarcina utilă JSON [S1]. - Testarea de validare: se testează dacă serverul respinge corect token-urile care au expirat conform revendicării
expsau sunt destinate unui public diferit, așa cum este definit de revendicareaaud[S1].
