Menggunakan AI untuk Mencari Pepijat Autorisasi

Program bug bounty sedang berubah. Sesetengah program telah berhenti membayar ganjaran. Yang lain mengurangkan bayaran sebanyak 80%. Sebabnya bukan kerana AI menemui terlalu banyak pepijat. Sebabnya adalah kerana AI menemui terlalu banyak pepijat yang salah. Pasukan triaj sedang lemas dalam laporan berkualiti rendah.

Dalam persekitaran ini, kemahiran yang paling penting bukanlah mencari pepijat. Ia adalah membuktikan bahawa sesuatu pepijat itu tidak wujud. Anda mesti mencari "negatif" yang betul.

Saya menggunakan kaedah dua peringkat untuk sasaran yang kod sumbernya tersedia (source-available).

Peringkat 1: Fan-out Gunakan model AI murah untuk membaca kod. Pecahkan sasaran kepada bahagian-bahagian kecil. Minta model tersebut mencari invarian yang rosak (broken invariants). Cari tempat di mana sesuatu objek dimuatkan tanpa semakan pemilik atau di mana pintu keselamatan dilangkau. Sasarkan "recall" yang tinggi. Jangkakan banyak kesilapan.

Peringkat 2: Adversarial Verification Gunakan model yang mahal dengan penaakulan tinggi untuk menyingkirkan calon-calon tersebut. Anggap setiap calon telah disangkal. Sesuatu calon hanya akan kekal jika anda boleh memetik baris kod yang khusus. Anda mesti membuktikan laluan tersebut boleh dicapai dan tiada semakan lain yang menghalangnya.

Output yang paling berharga ialah senarai sanggahan (refutations). Senarai ini membina kepercayaan dengan pasukan triaj.

Saya menguji Ory Kratos, sebuah pelayan identiti sumber terbuka. Saya melihat aliran tetapan. Bahagian ini mengendalikan pertukaran kata laluan dan kemas kini e-mel. Satu kesilapan tunggal di sini boleh membawa kepada rampasan akaun (account takeover).

Peringkat pertama menemui pepijat yang menggiurkan. Dalam strategi OIDC, satu container tertentu kekurangan pengikatan identiti (identity binding). Jika anda hanya mencari semakan yang hilang, anda akan melaporkan ini sebagai pepijat tahap keterukan tinggi.

Itu adalah satu kesilapan.

Pengikatan yang hilang itu tidak boleh dieksploitasi. Sistem tersebut mendapatkan identiti sasaran daripada kuki sesi aktif atau token yang ditandatangani. Ciri-ciri container tersebut tidak pernah terpakai kepada sasaran penulisan yang sebenar. Reka bentuk tersebut adalah kukuh.

Melaporkan perkara ini akan membazirkan masa dan menjejaskan kredibiliti anda. Nilai yang saya berikan adalah keyakinan untuk tidak menghantar laporan.

Apabila saya menggunakan kaedah yang sama pada sasaran yang berbeza, saya menemui pepijat yang sebenar. Satu titik masuk alternatif terlepas semakan autorisasi yang dikuatkuasakan oleh laluan utama. Pengguna yang telah dibatalkan aksesnya masih boleh masuk melalui pintu belakang. Pepijat ini berimpak tinggi dan tidak kelihatan kepada pengimbas standard.

Penjaga pintu (gatekeepers) sedang membina tembok terhadap lambakan laporan. Untuk berjaya, kerja AI anda mestilah teliti. Gunakan AI untuk membaca lebih banyak kod daripada yang boleh dilakukan oleh manusia. Kemudian gunakan AI untuk membuktikan diri anda salah sebelum anda menekan butang hantar.

Fokus pada isyarat, bukan lambakan.

Sumber: https://dev.to/fdjedkdlsspec/using-ai-to-find-authorization-bugs-and-to-prove-the-ones-that-arent-real-3m7d