FixVibe
Covered by FixVibehigh

Siguria JWT: Rreziqet e argumenteve të pasigurta dhe verifikimi i pretendimit të munguar

JSON Web Tokens (JWT) ofrojnë një standard për transferimin e pretendimeve, por siguria mbështetet në vërtetimin rigoroz. Dështimi për të verifikuar nënshkrimet, kohët e skadimit ose audiencat e synuara i lejon sulmuesit të anashkalojnë vërtetimin ose të riprodhojnë argumentet.

CWE-347CWE-287CWE-613

Ndikimi i sulmuesit

Vlefshmëria e gabuar JWT lejon sulmuesit të anashkalojnë mekanizmat e vërtetimit duke falsifikuar pretendimet ose duke ripërdorur argumentet e skaduara [S1]. Nëse një server pranon shenja pa një nënshkrim të vlefshëm, një sulmues mund të modifikojë ngarkesën për të përshkallëzuar privilegjet ose të imitojë ndonjë përdorues [S1]. Për më tepër, dështimi për të zbatuar pretendimin e skadimit (exp) i lejon një sulmuesi të përdorë një token të komprometuar për një kohë të pacaktuar [S1].

Shkaku rrënjësor

Një Token Ueb JSON (JWT) është një strukturë e bazuar në JSON që përdoret për të përfaqësuar pretendimet që janë të nënshkruara dixhitale ose të mbrojtura nga integriteti [S1]. Dështimet e sigurisë zakonisht rrjedhin nga dy boshllëqe kryesore të zbatimit:

  • Pranimi i JWT-ve të pasigurta: Nëse një shërbim nuk zbaton rreptësisht verifikimin e nënshkrimit, ai mund të përpunojë "JWT-të e pasigurta" ku nënshkrimi mungon dhe algoritmi është vendosur në "asnjë" [S1]. Në këtë skenar, serveri u beson pretendimeve në ngarkesë pa verifikuar integritetin e tyre [S1].
  • Vleresimi i Kërkesës që mungon: Pretendimi exp (koha e skadimit) identifikon kohën në ose pas së cilës JWT nuk duhet të pranohet për përpunim [S1]. Pretendimi aud (audienca) identifikon marrësit e synuar të tokenit [S1]. Nëse këto nuk janë të kontrolluara, serveri mund të pranojë shenja që kanë skaduar ose janë të destinuara për një aplikacion tjetër [S1].

Rregullime konkrete

  • Zbatoni nënshkrimet kriptografike: Konfiguro aplikacionin për të refuzuar çdo JWT që nuk përdor një algoritëm të fortë nënshkrimi të miratuar paraprakisht (si p.sh. RS256).
  • Vlerëso skadimin: Zbatoni një kontroll të detyrueshëm për të siguruar që data dhe ora aktuale janë përpara kohës së specifikuar në pretendimin exp [S1].
  • Verifiko audiencën: Sigurohu që pretendimi aud përmban një vlerë që identifikon shërbimin lokal; nëse shërbimi nuk identifikohet në pretendimin aud, token duhet të refuzohet [S1].
  • Parandaloni riprodhimin: Përdorni pretendimin jti (JWT ID) për t'i caktuar një identifikues unik çdo token, duke lejuar serverin të gjurmojë dhe të refuzojë argumentet e ripërdorura [S1].

Strategjia e zbulimit

Dobësitë në trajtimin e JWT mund të identifikohen duke analizuar strukturën e tokenit dhe sjelljen e përgjigjes së serverit:

  • Inspektimi i kokës: Kontrollimi i kokës alg (algoritmi) për t'u siguruar që nuk është vendosur në "asnjë" dhe përdor standardet e pritura kriptografike [S1].
  • Verifikimi i pretendimit: Konfirmimi i pranisë dhe vlefshmërisë së pretendimeve exp (skadimi) dhe aud (audiencë) brenda ngarkesës JSON [S1].
  • Testimi i vlefshmërisë: Testimi nëse serveri refuzon saktë argumentet që kanë skaduar sipas pretendimit exp ose janë të destinuara për një audiencë të ndryshme siç përcaktohet nga pretendimi aud [S1].