FixVibe
Covered by FixVibehigh

JWT Xavfsizlik: ta'minlanmagan tokenlar xavfi va da'voni tekshirishning yo'qligi

JSON Web Tokens (JWTs) da'volarni o'tkazish uchun standartni taqdim etadi, ammo xavfsizlik qat'iy tekshirishga tayanadi. Imzolarni, amal qilish muddatini yoki mo‘ljallangan auditoriyani tekshirmaslik tajovuzkorlarga autentifikatsiyani chetlab o‘tish yoki tokenlarni takrorlash imkonini beradi.

CWE-347CWE-287CWE-613

Hujumchining ta'siri

Noto'g'ri JWT tekshiruvi tajovuzkorlarga da'volarni soxtalashtirish yoki muddati o'tgan [S1] tokenlarini qayta ishlatish orqali autentifikatsiya mexanizmlarini chetlab o'tish imkonini beradi. Agar server tokenlarni yaroqli imzosiz qabul qilsa, tajovuzkor imtiyozlarni oshirish yoki istalgan [S1] foydalanuvchisining o‘zini namoyon qilish uchun foydali yukni o‘zgartirishi mumkin. Bundan tashqari, amal qilish muddati tugashi (exp) daʼvosini bajarmaslik tajovuzkorga buzilgan tokendan [S1] muddatsiz foydalanish imkonini beradi.

Asosiy sabab

JSON veb tokeni (JWT) raqamli imzolangan yoki yaxlitligi himoyalangan [S1] daʼvolarni ifodalash uchun foydalaniladigan JSONga asoslangan tuzilmadir. Xavfsizlik xatolari odatda ikkita asosiy bo'shliqdan kelib chiqadi:

  • Ta'minlanmagan JWTlarni qabul qilish: Agar xizmat imzoni tekshirishni qat'iy talab qilmasa, u imzo yo'q va algoritm "yo'q" [S1] ga o'rnatilgan "Xavfsiz JWT" ni qayta ishlashi mumkin. Bu stsenariyda server foydali yukdagi daʼvolarga ularning yaxlitligini tekshirmasdan ishonadi [S1].
  • Yo‘qotilgan da’voni tekshirish: exp (yaroqlilik muddati) da’vosi JWT [S1]ni qayta ishlash uchun qabul qilinmasligi kerak bo‘lgan yoki undan keyin vaqtni belgilaydi. aud (auditoriya) daʼvosi [S1] tokenining moʻljallangan oluvchilarini aniqlaydi. Agar ular belgilanmagan bo'lsa, server muddati o'tgan yoki boshqa [S1] ilovasi uchun mo'ljallangan tokenlarni qabul qilishi mumkin.

Beton tuzatishlar

  • Kriptografik imzolarni qo‘llash: Ilovani oldindan tasdiqlangan, kuchli imzolash algoritmidan (masalan, RS256) foydalanmaydigan har qanday JWTni rad etish uchun sozlang.
  • Muddati tugashini tekshirish: Joriy sana va vaqt exp daʼvosi [S1] daʼvosida koʻrsatilgan vaqtdan oldin boʻlishini taʼminlash uchun majburiy tekshiruvni oʻtkazing.
  • Tomoshabinni tekshirish: aud daʼvosida mahalliy xizmatni identifikatsiya qiluvchi qiymat mavjudligiga ishonch hosil qiling; agar xizmat aud da'vosida aniqlanmagan bo'lsa, token [S1] rad etilishi kerak.
  • Takrorlashni oldini olish: jti (JWT ID) daʼvosidan har bir tokenga noyob identifikator tayinlash uchun foydalaning, bu esa serverga qayta ishlatilgan [S1] tokenlarini kuzatish va rad etish imkonini beradi.

Aniqlash strategiyasi

JWT bilan ishlashdagi zaifliklar token tuzilishi va serverning javob xatti-harakatlarini tahlil qilish orqali aniqlanishi mumkin:

  • Sarlavhani tekshirish: alg (algoritm) sarlavhasi “yo‘q”ga o‘rnatilmaganligiga ishonch hosil qilish va kutilgan [S1] kriptografik standartlardan foydalanishni tekshirish.
  • Da’voni tekshirish: exp (muddati tugaydi) va aud (auditoriya) da’volarining [S1] JSON foydali yukida mavjudligi va haqiqiyligini tasdiqlash.
  • Tasdiqlash testi: exp daʼvosiga koʻra muddati oʻtgan yoki aud daʼvosi [S1] daʼvosi boʻyicha belgilangan boshqa auditoriya uchun moʻljallangan tokenlarni server toʻgʻri rad etishini tekshirish.