Dopad útočníka
Nesprávné ověření JWT umožňuje útočníkům obejít mechanismy ověřování falšováním nároků nebo opětovným použitím tokenů, jejichž platnost vypršela [S1]. Pokud server přijme tokeny bez platného podpisu, může útočník upravit datovou část a zvýšit tak oprávnění nebo se vydávat za libovolného uživatele [S1]. Kromě toho selhání při vynucení nároku na vypršení platnosti (exp) umožňuje útočníkovi používat kompromitovaný token neomezeně dlouho [S1].
Hlavní příčina
Webový token JSON (JWT) je struktura založená na JSON používaná k reprezentaci nároků, které jsou digitálně podepsány nebo chráněny integritou [S1]. Selhání zabezpečení obvykle pramení ze dvou primárních implementačních mezer:
- Akceptace nezabezpečených JWT: Pokud služba přísně nevynucuje ověřování podpisu, může zpracovat „nezabezpečená JWT“, kde podpis chybí a algoritmus je nastaven na „žádný“ [S1]. V tomto scénáři server důvěřuje nárokům v datové části, aniž by ověřoval jejich integritu [S1].
- Chybějící ověření nároku: Reklamace
exp(doba vypršení platnosti) identifikuje čas, kdy nebo po kterém nesmí být JWT přijat ke zpracování [S1]. Nárokaud(publikum) identifikuje zamýšlené příjemce tokenu [S1]. Pokud tyto nejsou zaškrtnuté, server může přijímat tokeny, kterým vypršela platnost nebo byly určeny pro jinou aplikaci [S1].
Opravy betonu
- Vynutit kryptografické podpisy: Nakonfigurujte aplikaci tak, aby odmítla jakýkoli JWT, který nepoužívá předem schválený silný podpisový algoritmus (jako je RS256).
- Ověřit vypršení platnosti: Proveďte povinnou kontrolu, abyste zajistili, že aktuální datum a čas jsou před časem uvedeným v nároku
exp[S1]. - Ověřte publikum: Ujistěte se, že požadavek
audobsahuje hodnotu identifikující místní službu; pokud služba není v reklamaciaudidentifikována, musí být token odmítnut [S1]. - Zabránit opakovanému přehrávání: Použijte nárok
jti(ID JWT) k přiřazení jedinečného identifikátoru každému tokenu, což serveru umožní sledovat a odmítat znovu použité tokeny [S1].
Strategie detekce
Chyby zabezpečení ve zpracování JWT lze identifikovat analýzou struktury tokenu a chování odezvy serveru:
- Kontrola záhlaví: Kontrola záhlaví
alg(algoritmus), aby se zajistilo, že není nastaveno na "none" a používá očekávané kryptografické standardy [S1]. - Ověření nároku: Potvrzení přítomnosti a platnosti nároků
exp(vypršení platnosti) aaud(publikum) v rámci užitečného obsahu JSON [S1]. - Validační testování: Testování, zda server správně odmítne tokeny, jejichž platnost vypršela podle nároku
expnebo jsou určeny pro jiné publikum, jak je definováno v nárokuaud[S1].
