Cryptology Academy · Pelajaran

Kerentanan JWT: alg=none & Kekacauan Kunci

Eksploitasi dan perbaiki kesalahan keamanan JWT yang paling umum.

Pelajaran 3 dari 413 langkah

Kerentanan JWT: alg=none & Kekacauan Kunci adalah pelajaran Cryptology Academy gratis di CoddyKit. Ini adalah pelajaran 3 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar Cryptology Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus Cryptology Academy mencakup 4 pelajaran total.

Permukaan Serangan JWT

JWT ditandatangani secara kriptografis, tetapi banyak pustaka memiliki kerentanan serius. Yang paling sering dieksploitasi adalah serangan alg=none, serangan kebingungan RS256→HS256, dan pembobolan rahasia yang lemah secara brute force. Semua ini berawal dari mempercayai bidang header yang dikendalikan penyerang.

Serangan alg=none

Spesifikasi JWT mengizinkan alg:"none" untuk token tanpa pengamanan. Pustaka yang bermasalah menerima nilai ini dan sepenuhnya melewati verifikasi tanda tangan. Penyerang mengubah muatan (misalnya, "role":"admin"), menetapkan alg:"none", menghapus tanda tangan, lalu server menerimanya.

Contoh Eksploitasi alg=none

Asli: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJ1c2VyIn0.SIG Serangan: eyJhbGciOiJub25lIn0.eyJzdWIiOiJhZG1pbiJ9. (tanda tangan kosong, diakhiri titik). Server yang rentan berhasil memverifikasinya dan memberikan akses administrator.

Perbaikan alg=none

Jangan pernah menerima alg:"none" dalam produksi. Tetapkan daftar putih algoritme yang diizinkan secara eksplisit: jwt.decode(token, key, algorithms=["HS256"]). Sebagian besar pustaka modern (PyJWT 2+, jsonwebtoken 9+) menolak alg=none secara bawaan.

Kebingungan Kunci RS256 → HS256

Jika server menggunakan RS256 dan klien mengubah alg menjadi HS256, server mungkin memverifikasi menggunakan kunci publik RSA-nya sebagai rahasia HMAC. Karena kunci publik itu... publik, penyerang menandatangani muatan sembarang dengannya dan server memverifikasinya.

Eksploitasi Kebingungan Kunci

Langkah-langkah: 1) Ambil kunci publik dari titik akhir JWKS. 2) Buat muatan berbahaya. 3) Tandatangani dengan HMAC-SHA256 menggunakan byte PEM kunci publik mentah sebagai rahasia HMAC. 4) Tetapkan alg:"HS256" pada header. 5) Jalur HS256 server berhasil memverifikasinya.

Perbaikan Kebingungan Kunci

Selalu tentukan algoritme yang diharapkan secara eksplisit dalam panggilan verifikasi. Jangan pernah menentukan algoritme berdasarkan header token. Gunakan jalur kode terpisah untuk RS256 dan HS256 yang tidak dapat ditukar oleh pemanggil.

Pembobolan Rahasia Lemah secara Brute Force

HS256 dengan rahasia lemah (entropi kurang dari 256 bit) dapat dibobol secara luring menggunakan brute force. Alat seperti hashcat mendukung pembobolan JWT: hashcat -a 0 -m 16500 token.txt wordlist.txt. Gunakan rahasia acak secara kriptografis dengan panjang minimal 32 byte.

Injeksi Header melalui kid

Header kid (ID kunci) memilih kunci yang akan digunakan. Jika server menggunakan kid sebagai parameter kueri SQL atau jalur sistem berkas tanpa sanitasi: kid="../../dev/null" → HMAC dengan kunci kosong → token palsu diterima. Selalu lakukan sanitasi terhadap kid.

Injeksi Header jwk

Header jwk menyertakan kunci publik untuk verifikasi. Server yang rentan mungkin menggunakan kunci yang disertakan tersebut secara langsung, sehingga penyerang dapat memasok pasangan kuncinya sendiri, menandatangani token dengan kunci privat, dan menyertakan kunci publiknya. Lakukan verifikasi hanya terhadap kunci yang terdaftar.

Pelewatan Validasi Token Kedaluwarsa

Beberapa implementasi lupa memeriksa klaim exp atau menggunakan waktu server secara tidak konsisten. Selalu validasi exp, nbf, dan iat secara eksplisit. Gunakan pustaka yang memeriksa semua ini secara bawaan dan jangan pernah menonaktifkan validasi klaim dalam produksi.

Pemeriksaan Singkat

Dalam serangan kebingungan kunci RS256→HS256, apa yang digunakan penyerang sebagai rahasia HMAC?

Ringkasan

Kerentanan JWT muncul karena mempercayai header alg, menerima alg=none, dan menggunakan rahasia yang lemah. Perbaikan: tetapkan algoritme pada pihak yang memverifikasi, gunakan rahasia yang kuat, dan lakukan sanitasi terhadap kid. Berikutnya: praktik implementasi JWT yang aman.

Gratis untuk memulai

Belajar Cryptology Academy dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
67
Pelajaran
261

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Kerentanan JWT: alg=none & Kekacauan Kunci” gratis?

Ya — teks lengkap “Kerentanan JWT: alg=none & Kekacauan Kunci” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus Cryptology Academy, upgrade ke CoddyKit PRO. Kursus Cryptology Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Kerentanan JWT: alg=none & Kekacauan Kunci”?

Eksploitasi dan perbaiki kesalahan keamanan JWT yang paling umum. Kamu berlatih Cryptology Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai Cryptology Academy?

Tidak diperlukan pengalaman sebelumnya. Cryptology Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 3 dari 4.

Berapa lama pelajaran “Kerentanan JWT: alg=none & Kekacauan Kunci” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran Cryptology Academy ini?

Ya. Setiap pelajaran Cryptology Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. Anatomi JWT: Header, Payload, Tanda Tangan
  2. HS256 vs RS256: JWT Simetris vs Asimetris
  3. Kerentanan JWT: alg=none & Kekacauan Kunci
  4. Praktik Terbaik Implementasi JWT yang Aman
← Kembali ke Cryptology Academy