Uzbrucēja ietekme
Nepareiza JWT validācija ļauj uzbrucējiem apiet autentifikācijas mehānismus, viltojot pretenzijas vai atkārtoti izmantojot marķierus, kuriem beidzies derīguma termiņš. Ja serveris pieņem marķierus bez derīga paraksta, uzbrucējs var modificēt lietderīgo slodzi, lai palielinātu privilēģijas vai uzdoties par jebkuru lietotāju [S1]. Turklāt, ja netiek izpildīta pretenzija par termiņa beigām (exp), uzbrucējs var bezgalīgi izmantot apdraudētu marķieri [S1].
Galvenais cēlonis
JSON tīmekļa marķieris (JWT) ir uz JSON balstīta struktūra, ko izmanto, lai attēlotu pretenzijas, kas ir digitāli parakstītas vai aizsargātas ar integritāti [S1]. Drošības kļūmes parasti rodas no divām galvenajām ieviešanas nepilnībām:
- Nenodrošinātu JWT pieņemšana: ja pakalpojums stingri neveic paraksta verifikāciju, tas var apstrādāt "nedrošos JWT", ja paraksta nav un algoritms ir iestatīts uz "nav". [S1]. Šādā gadījumā serveris uzticas pretenzijām lietderīgajā slodzē, nepārbaudot to integritāti [S1].
- Trūkst pretenzijas apstiprināšanas: pretenzija
exp(derīguma termiņš) norāda laiku, kurā vai pēc kura JWT nedrīkst pieņemt [S1] apstrādei. Pretenzijaaud(auditorija) identificē marķiera [S1] paredzētos saņēmējus. Ja tie nav atzīmēti, serveris var pieņemt marķierus, kuru derīguma termiņš ir beidzies vai kuri bija paredzēti citai lietojumprogrammai [S1].
Betona labojumi
- Iespiediet kriptogrāfiskos parakstus: konfigurējiet lietojumprogrammu, lai noraidītu jebkuru JWT, kurā netiek izmantots iepriekš apstiprināts, spēcīgs parakstīšanas algoritms (piemēram, RS256).
- Apstiprināt derīguma termiņu: veiciet obligātu pārbaudi, lai pārliecinātos, ka pašreizējais datums un laiks ir pirms
exppretenzijā [S1] norādītā laika. - Pārbaudiet auditoriju: pārliecinieties, vai pretenzijā
audir ietverta vērtība, kas identificē vietējo pakalpojumu; ja pakalpojums nav identificēts pretenzijāaud, marķieris ir jānoraida [S1]. - Novērst atkārtošanu: izmantojiet pretenziju
jti(JWT ID), lai piešķirtu katram marķierim unikālu identifikatoru, ļaujot serverim izsekot un noraidīt atkārtoti izmantotās pilnvaras [S1].
Atklāšanas stratēģija
JWT apstrādes ievainojamības var noteikt, analizējot marķiera struktūru un servera atbildes uzvedību:
- Galvenes pārbaude:
alg(algoritma) galvenes pārbaude, lai pārliecinātos, ka tā nav iestatīta uz "nav" un tiek izmantoti paredzamie kriptogrāfijas standarti [S1]. - Pretenzijas pārbaude:
exp(derīguma termiņš) unaud(auditorija) pretenziju esamības un derīguma apstiprināšana JSON slodzes [S1] ietvaros. - Validācijas pārbaude: pārbaude, vai serveris pareizi noraida marķierus, kuru derīguma termiņš ir beidzies saskaņā ar pretenziju
expvai kuri ir paredzēti citai auditorijai, kā noteiktsaudpretenzijā [S1].
