FixVibe
Covered by FixVibehigh

Keselamatan JWT: Risiko Token Tidak Bercagar dan Pengesahan Tuntutan Hilang

Token Web JSON (JWT) menyediakan standard untuk memindahkan tuntutan, tetapi keselamatan bergantung pada pengesahan yang ketat. Kegagalan untuk mengesahkan tandatangan, masa tamat tempoh atau khalayak yang dimaksudkan membolehkan penyerang memintas pengesahan atau memainkan semula token.

CWE-347CWE-287CWE-613

Kesan Penyerang

Pengesahan JWT yang tidak betul membolehkan penyerang memintas mekanisme pengesahan dengan memalsukan tuntutan atau menggunakan semula token tamat tempoh [S1]. Jika pelayan menerima token tanpa tandatangan yang sah, penyerang boleh mengubah suai muatan untuk meningkatkan keistimewaan atau menyamar sebagai mana-mana pengguna [S1]. Selain itu, kegagalan untuk menguatkuasakan tuntutan tamat tempoh (exp) membolehkan penyerang menggunakan token yang dikompromi selama-lamanya [S1].

Punca Punca

Token Web JSON (JWT) ialah struktur berasaskan JSON yang digunakan untuk mewakili tuntutan yang ditandatangani secara digital atau dilindungi integriti [S1]. Kegagalan keselamatan biasanya berpunca daripada dua jurang pelaksanaan utama:

  • Penerimaan JWT Tidak Bercagar: Jika perkhidmatan tidak menguatkuasakan pengesahan tandatangan dengan ketat, ia mungkin memproses "JWT Tidak Bercagar" apabila tandatangan tiada dan algoritma ditetapkan kepada "tiada" [S1]. Dalam senario ini, pelayan mempercayai tuntutan dalam muatan tanpa mengesahkan integritinya [S1].
  • Pengesahan Tuntutan Hilang: Tuntutan exp (masa tamat tempoh) mengenal pasti masa pada atau selepas itu JWT mesti tidak diterima untuk memproses [S1]. Tuntutan aud (khalayak) mengenal pasti penerima yang dimaksudkan untuk token [S1]. Jika ini tidak disemak, pelayan boleh menerima token yang telah tamat tempoh atau bertujuan untuk aplikasi berbeza [S1].

Pembetulan Konkrit

  • Kuatkuasakan Tandatangan Kriptografi: Konfigurasikan aplikasi untuk menolak mana-mana JWT yang tidak menggunakan algoritma tandatangan kukuh yang telah diluluskan terlebih dahulu (seperti RS256).
  • Sahkan Tamat Tempoh: Laksanakan semakan mandatori untuk memastikan tarikh dan masa semasa adalah sebelum masa yang dinyatakan dalam tuntutan exp [S1].
  • Sahkan Khalayak: Pastikan tuntutan aud mengandungi nilai yang mengenal pasti perkhidmatan tempatan; jika perkhidmatan tidak dikenal pasti dalam tuntutan aud, token mesti ditolak [S1].
  • Cegah Main Semula: Gunakan tuntutan jti (JWT ID) untuk memberikan pengecam unik kepada setiap token, membenarkan pelayan menjejak dan menolak token yang digunakan semula [S1].

Strategi Pengesanan

Kerentanan dalam pengendalian JWT boleh dikenal pasti dengan menganalisis struktur token dan tingkah laku tindak balas pelayan:

  • Pemeriksaan Pengepala: Menyemak pengepala alg (algoritma) untuk memastikan ia tidak ditetapkan kepada "tiada" dan menggunakan piawaian kriptografi yang dijangkakan [S1].
  • Pengesahan Tuntutan: Mengesahkan kehadiran dan kesahihan tuntutan exp (tamat tempoh) dan aud (khalayak) dalam muatan JSON [S1].
  • Pengujian Pengesahan: Menguji jika pelayan menolak token yang telah tamat tempoh dengan betul mengikut tuntutan exp atau bertujuan untuk khalayak berbeza seperti yang ditakrifkan oleh tuntutan aud [S1].