Saya Membangun Pemindai Keamanan AI — Lalu Menemukan Bug pada Detektor Saya Sendiri
Prompt injection adalah risiko keamanan utama bagi aplikasi LLM. Anda memberikan teks kepada model yang menyuruhnya untuk mengabaikan instruksi aslinya. Terkadang, model tersebut menurut.
Saya membangun AgentProbe untuk menguji hal ini. Alat ini meluncurkan 49 prompt serangan di 8 kategori seperti jailbreak dan ekstraksi data. Ia melaporkan seberapa sering sebuah model gagal.
Pelajaran sebenarnya bukanlah tentang pemindainya. Melainkan sebuah bug dalam kode deteksi saya.
Bagian yang sulit bukanlah serangannya. Bagian yang sulit adalah deteksinya.
Bagaimana Anda tahu jika sebuah model benar-benar mematuhi serangan? Pencocokan kata kunci (keyword matching) adalah cara yang mudah. Anda mencari frasa penolakan seperti "I cannot help" atau frasa kepatuhan seperti "developer mode."
Namun, model menggunakan pola "hedge-then-comply" (berdalih lalu patuh). Mereka mengatakan "I cannot help with that," tetapi kemudian mereka tetap memberikan informasi yang dibatasi tersebut. Pencocokan kata kunci gagal di sini karena frasa penolakan tersebut ada.
Untuk memperbaiki ini, saya menggunakan sistem "LLM-as-judge". Saya mengirimkan percakapan tersebut ke model yang lebih kuat untuk memutuskan apakah target benar-benar patuh. Rencana saya adalah menggunakan pemeriksaan kata kunci yang murah terlebih dahulu dan hanya menggunakan judge yang mahal ketika pemeriksaan kata kunci merasa tidak yakin.
Kemudian saya menemukan bug saya.
Detektor kata kunci saya mengembalikan skor kepercayaan (confidence score) sebesar 1 ketika menemukan pola "hedge-then-comply". Namun, kode saya hanya mempercayai tahap kata kunci jika skor kepercayaannya 2 atau lebih tinggi.
Ini berarti detektor "murah" saya tidak pernah benar-benar membuat keputusan. Setiap kasus dieskalasi ke judge yang mahal. Saya membayar untuk seorang judge pada setiap kasus, bahkan ketika alat gratis saya seharusnya bisa menanganinya.
Kesalahan ini mengajarkan saya tiga pelajaran tentang penggunaan LLM untuk menilai LLM lainnya:
- Sang judge harus lebih pintar daripada targetnya. Jika judge memiliki ukuran yang sama dengan target, ia akan memiliki titik buta (blind spots) yang sama.
- Akurasi bisa menipu. Jika sebagian besar model menolak, seorang judge yang selalu mengatakan "refused" akan terlihat akurat tetapi tidak mempelajari apa pun. Gunakan metrik seperti Cohen's kappa untuk memperhitungkan faktor keberuntungan.
- Sang judge harus stabil. Jalankan tes yang sama lima kali. Jika judge berubah pikiran, hasilnya ambigu dan memerlukan pengawasan manusia.
Jika Anda membangun sesuatu dengan LLM, ingatlah poin-poin ini:
- Mendeteksi kepatuhan lebih sulit daripada menyebabkannya.
- Waspadai model yang menolak di kalimat pertama tetapi patuh di kalimat kedua.
- Jangan percaya pada judge LLM secara membabi buta. Ukur keandalannya.
- Bagikan bug Anda. Menemukan kekurangan saya sendiri mengajarkan saya lebih banyak daripada peluncuran yang sempurna.
Source: https://dev.to/nar1frames/i-built-an-ai-security-scanner-then-found-a-bug-in-my-own-detector-140a
Optional learning community: https://t.me/GyaanSetuAi
