FixVibe
Covered by FixVibehigh

JWT Təhlükəsizlik: Təminatsız Tokenlərin Riskləri və İddia Doğrulamasının Çatışması

JSON Veb Tokenləri (JWTs) iddiaların ötürülməsi üçün standart təmin edir, lakin təhlükəsizlik ciddi yoxlamaya əsaslanır. İmzaların, bitmə vaxtlarının və ya nəzərdə tutulan auditoriyanın yoxlanılmaması təcavüzkarlara autentifikasiyadan keçməyə və ya tokenləri təkrarlamağa imkan verir.

CWE-347CWE-287CWE-613

Hücumçu Təsiri

Yanlış JWT doğrulaması təcavüzkarlara iddiaları saxtalaşdırmaqla və ya vaxtı keçmiş [S1] tokenlərindən təkrar istifadə etməklə autentifikasiya mexanizmlərini yan keçməyə imkan verir. Server etibarlı imza olmadan tokenləri qəbul edərsə, təcavüzkar imtiyazları artırmaq və ya [S1] hər hansı istifadəçini təqlid etmək üçün faydalı yükü dəyişdirə bilər. Bundan əlavə, müddətin başa çatması (exp) iddiasının tətbiq edilməməsi təcavüzkara [S1]-dən qeyri-müəyyən müddətə istifadə etməyə imkan verir.

Kök Səbəb

JSON Veb Tokeni (JWT) rəqəmsal imzalanmış və ya bütövlüyü qorunan [S1] iddialarını təmsil etmək üçün istifadə edilən JSON əsaslı strukturdur. Təhlükəsizlik uğursuzluqları adətən iki əsas icra boşluğundan qaynaqlanır:

  • Təhlükəsiz JWT-lərin qəbulu: Əgər xidmət imza yoxlanışını ciddi şəkildə tətbiq etmirsə, o, imzanın olmadığı və alqoritmin [S1] "heç biri" olaraq təyin edildiyi "Təminatsız JWT"ləri emal edə bilər. Bu ssenaridə server [S1] tamlığını yoxlamadan faydalı yükdəki iddialara etibar edir.
  • Çatışmayan İddianın Təsdiqlənməsi: exp (keçmə vaxtı) iddiası JWT-nin [S1]-nin emalı üçün qəbul edilməməsi lazım olan vaxtı və ya ondan sonra müəyyən edir. aud (auditoriya) iddiası [S1] tokeninin nəzərdə tutulan alıcılarını müəyyən edir. Bunlar yoxlanılmazsa, server vaxtı keçmiş və ya başqa [S1] tətbiqi üçün nəzərdə tutulmuş tokenləri qəbul edə bilər.

Beton Təmirləri

  • Kriptoqrafik İmzaları Tətbiq Edin: Əvvəlcədən təsdiqlənmiş, güclü imzalama alqoritmini (RS256 kimi) istifadə etməyən hər hansı JWT-ni rədd etmək üçün proqramı konfiqurasiya edin.
  • Müddət müddətini yoxlayın: Cari tarix və vaxtın exp [S1] iddiasında göstərilən vaxtdan əvvəl olmasını təmin etmək üçün məcburi yoxlama aparın.
  • Tamaşaçıları Doğrulayın: aud iddiasının yerli xidməti müəyyən edən dəyəri ehtiva etdiyinə əmin olun; xidmət aud iddiasında müəyyən edilməzsə, token [S1] rədd edilməlidir.
  • Təkrarın qarşısını alın: jti (JWT ID) iddiasından istifadə edərək hər bir tokenə unikal identifikator təyin edin, bu da serverə [S1] təkrar istifadə edilmiş tokenləri izləməyə və rədd etməyə imkan verir.

Aşkarlama Strategiyası

JWT işində zəifliklər token strukturunu və server cavab davranışını təhlil etməklə müəyyən edilə bilər:

  • Başlıq Təftişi: alg (alqoritm) başlığının yoxlanılması, onun "heç biri" olaraq təyin edilmədiyinə əmin olmaq və [S1] gözlənilən kriptoqrafik standartlarından istifadə edir.
  • İddiaların yoxlanılması: exp (müddəti bitmiş) və aud (auditoriya) iddialarının [S1] JSON yükü daxilində mövcudluğunun və etibarlılığının təsdiqlənməsi.
  • Təsdiqləmə Testi: exp iddiasına uyğun olaraq vaxtı keçmiş tokenləri serverin düzgün şəkildə rədd edib-etmədiyini və ya aud iddiası [S1] ilə müəyyən edilmiş fərqli auditoriya üçün nəzərdə tutulduğunu yoxlamaq.