Tinjauan AuthZ Berbantuan AI: Membaca Batasan Izin dalam Ory Kratos
AI buruk dalam menemukan bug tetapi sangat hebat dalam memicu kecurigaan.
Dalam keamanan, hal termurah yang dapat dilakukan AI adalah menciptakan banjir laporan palsu. Inilah sebabnya mengapa program bug bounty sedang menunda atau memperketat aturan.
Saya menggunakan AI secara berbeda. Saya membiarkan AI menghasilkan hipotesis secara berlebihan berdasarkan Katalog AuthZ Smell saya. Kemudian, saya melakukan pekerjaan beratnya. Tugas saya adalah mematahkan hipotesis-hipotesis tersebut.
Tinjauan yang sukses bukanlah daftar bug. Melainkan sebuah tabel eliminasi dari ide-ide yang gagal dalam pengujian.
Saya meninjau kode sumber Ory Kratos. Kratos menangani identitas dan manajemen pengguna. Ini adalah area berisiko tinggi karena menggunakan banyak identitas dan API publik.
Saya menguji lima hipotesis:
- H1: Admin API tidak memiliki otorisasi di dalam kode.
- H2: Kebocoran data lintas-identitas atau lintas-tenant.
- H3: Penggunaan kembali token dalam alur pemulihan.
- H4: Kebingungan identitas dalam alur pengaturan.
- H5: Penetapan tenant melalui payload permintaan.
Hasilnya:
- H1: DIPATAHKAN. Otorisasi berada di batas jaringan, bukan di handler kode. Ini memang sesuai desain.
- H2: DIPATAHKAN. Lapisan akses data pusat menyaring semua kueri berdasarkan ID tenant. Pengguna tidak dapat melewati ini.
- H3: DIPATAHKAN. Token hanya dapat digunakan sekali dan dibatasi waktu.
- H4: DIPATAHKAN. Alur terikat pada sesi, bukan pada input pengguna.
- H5: DIPATAHKAN. ID tenant berasal dari konteks sistem, bukan dari body permintaan.
Lima hipotesis diajukan. Nol temuan yang dihasilkan. Ini adalah tinjauan yang sukses.
Dua pelajaran untuk pekerjaan keamanan Anda:
Keamanan pada lapisan deployment tampak seperti keamanan yang hilang. Jika penjaga berada di tingkat jaringan, kode akan tampak telanjang. Jangan melaporkannya sebelum Anda memeriksa arsitekturnya.
Temukan titik hambat (chokepoint). Jika sebuah sistem menegakkan batasan pada lapisan data, handler individual tidak memerlukan pemeriksaan. Alih-alih bertanya "apakah handler ini memeriksa izin," bertanyalah "dapatkah siapa pun mencapai data tanpa melalui titik hambat tersebut?"
Gunakan AI untuk menolak kandidat. Gunakan manusia untuk memverifikasi yang tersisa. Nilainya terletak pada penolakan tersebut.
Komunitas belajar opsional: https://t.me/GyaanSetuAi
