Vplyv útočníka
Nesprávne overenie JWT umožňuje útočníkom obísť autentifikačné mechanizmy sfalšovaním nárokov alebo opätovným použitím tokenov, ktorých platnosť vypršala [S1]. Ak server akceptuje tokeny bez platného podpisu, útočník môže upraviť užitočné zaťaženie, aby zvýšil privilégiá alebo sa vydával za ľubovoľného používateľa [S1]. Okrem toho, ak sa nepodarí uplatniť nárok na vypršanie platnosti (exp), útočník môže používať kompromitovaný token neobmedzene dlho.
Hlavná príčina
Webový token JSON (JWT) je štruktúra založená na JSON používaná na reprezentáciu nárokov, ktoré sú digitálne podpísané alebo chránené proti integrite [S1]. Zlyhania zabezpečenia zvyčajne pramenia z dvoch primárnych medzier v implementácii:
- Akceptovanie nezabezpečených JWT: Ak služba striktne nevynucuje overenie podpisu, môže spracovať „nezabezpečené JWT“, kde podpis chýba a algoritmus je nastavený na „žiadny“ [S1]. V tomto scenári server dôveruje nárokom v užitočnom zaťažení bez overenia ich integrity [S1].
- Chýbajúce overenie nároku: Nárok
exp(čas vypršania platnosti) identifikuje čas alebo po ktorom JWT nesmie byť akceptovaný na spracovanie [S1]. Nárokaud(publikum) identifikuje zamýšľaných príjemcov tokenu [S1]. Ak tieto nie sú začiarknuté, server môže akceptovať tokeny, ktorých platnosť vypršala alebo boli určené pre inú aplikáciu [S1].
Opravy betónu
- Vynútiť kryptografické podpisy: Nakonfigurujte aplikáciu tak, aby odmietla akékoľvek JWT, ktoré nepoužívajú vopred schválený silný podpisový algoritmus (napríklad RS256).
- Potvrdenie platnosti: Implementujte povinnú kontrolu, aby ste sa uistili, že aktuálny dátum a čas sú pred časom uvedeným v nároku
exp[S1]. - Verify Audience: Uistite sa, že nárok
audobsahuje hodnotu identifikujúcu miestnu službu; ak služba nie je identifikovaná v reklamáciiaud, token musí byť odmietnutý [S1]. - Zabránenie opakovanému prehrávaniu: Použite nárok
jti(ID JWT) na priradenie jedinečného identifikátora každému tokenu, čo umožní serveru sledovať a odmietnuť opätovne použité tokeny [S1].
Stratégia detekcie
Zraniteľnosť pri manipulácii so JWT je možné identifikovať analýzou štruktúry tokenu a správania odozvy servera:
- Kontrola hlavičky: Kontrola hlavičky
alg(algoritmus), aby ste sa uistili, že nie je nastavená na "none" a používa očakávané kryptografické štandardy [S1]. - Overenie nároku: Potvrdenie prítomnosti a platnosti nárokov
exp(vypršanie platnosti) aaud(publikum) v rámci užitočného zaťaženia JSON [S1]. - Validačné testovanie: Testovanie, či server správne odmietne tokeny, ktorých platnosť vypršala podľa nároku
expalebo sú určené pre iné publikum, ako je definované v nárokuaud[S1].
