Dampak Penyerang
Validasi JWT yang tidak tepat memungkinkan penyerang melewati mekanisme otentikasi dengan memalsukan klaim atau menggunakan kembali token [S1] yang sudah kadaluwarsa. Jika server menerima token tanpa tanda tangan yang valid, penyerang dapat memodifikasi payload untuk meningkatkan hak istimewa atau menyamar sebagai pengguna [S1]. Selain itu, kegagalan untuk menegakkan klaim kedaluwarsa (exp) memungkinkan penyerang untuk menggunakan token yang disusupi tanpa batas waktu [S1].
Akar Penyebab
Token Web JSON (JWT) adalah struktur berbasis JSON yang digunakan untuk mewakili klaim yang ditandatangani secara digital atau dilindungi integritas [S1]. Kegagalan keamanan biasanya berasal dari dua kesenjangan implementasi utama:
- Penerimaan JWT Tanpa Jaminan: Jika layanan tidak menerapkan verifikasi tanda tangan secara ketat, layanan tersebut mungkin memproses "JWT Tanpa Jaminan" jika tanda tangan tidak ada dan algoritme disetel ke "tidak ada" [S1]. Dalam skenario ini, server mempercayai klaim dalam payload tanpa memverifikasi integritasnya [S1].
- Validasi Klaim Hilang: Klaim
exp(waktu kedaluwarsa) mengidentifikasi waktu pada atau setelahnya JWT tidak boleh diterima untuk memproses [S1]. Klaimaud(audiens) mengidentifikasi penerima token [S1] yang dituju. Jika ini tidak dicentang, server mungkin menerima token yang sudah kadaluarsa atau dimaksudkan untuk aplikasi berbeda [S1].
Perbaikan Beton
- Menerapkan Tanda Tangan Kriptografi: Konfigurasikan aplikasi untuk menolak JWT yang tidak menggunakan algoritme penandatanganan kuat dan telah disetujui sebelumnya (seperti RS256).
- Validasi Kedaluwarsa: Menerapkan pemeriksaan wajib untuk memastikan tanggal dan waktu saat ini sebelum waktu yang ditentukan dalam klaim
exp[S1]. - Verifikasi Audiens: Pastikan klaim
audberisi nilai yang mengidentifikasi layanan lokal; jika layanan tidak teridentifikasi dalam klaimaud, token harus ditolak [S1]. - Mencegah Pemutaran Ulang: Gunakan klaim
jti(JWT ID) untuk menetapkan pengidentifikasi unik pada setiap token, sehingga server dapat melacak dan menolak token yang digunakan kembali [S1].
Strategi Deteksi
Kerentanan dalam penanganan JWT dapat diidentifikasi dengan menganalisis struktur token dan perilaku respons server:
- Pemeriksaan Header: Memeriksa header
alg(algoritma) untuk memastikan header tersebut tidak disetel ke "tidak ada" dan menggunakan standar kriptografi yang diharapkan [S1]. - Verifikasi Klaim: Mengonfirmasi keberadaan dan validitas klaim
exp(kedaluwarsa) danaud(audiens) dalam payload JSON [S1]. - Pengujian Validasi: Menguji apakah server dengan benar menolak token yang telah kedaluwarsa sesuai dengan klaim
expatau ditujukan untuk audiens yang berbeda sebagaimana ditentukan oleh klaimaud[S1].
