Prompt Injection Bench — Mengukur Pertahanan
127 serangan × 9 preset × 5 repetisi (5.715 upaya mock); plus pengukuran live terhadap deepseek-v4-flash

- Proyek open source
- Evaluasi & Keamanan AI
- Indonesia
- 16 Agustus 2026
⚠ Ini proyek open source, bukan pekerjaan klien, dan khusus penggunaan defensif: benchmark ini menanam canary token di system prompt-nya sendiri dan mengukur apakah serangan bisa mengeluarkannya — untuk menguji aplikasi LLM yang Anda miliki atau berwenang menguji. Angka mock di bawah berasal dari target tiruan dengan konstanta susceptibility hard-coded; angka live ditandai eksplisit.
Masalahnya
Sebagian besar panduan prompt injection bersifat kualitatif — “pakai delimiter”, “tambahkan classifier”, “perkeras system prompt Anda”. Jarang ada yang menyebut seberapa besar. Klaim vendor seperti “memblokir prompt injection” tidak bisa difalsifikasi tanpa tiga hal: serangan mana, model mana, dan berapa kali run. Attack success rate (ASR) menyediakan ketiganya, dan memaksa bagian yang tidak nyaman keluar ke permukaan.
Yang dibangun
pibench menjalankan korpus 127 serangan terstruktur dalam 8 kategori — 44 di
antaranya tiba di luar giliran user, lewat dokumen terambil atau deskripsi tool,
karena kanal pengiriman sama menentukannya dengan kategori — melawan stack
pertahanan yang komposabel: spotlighting, delimiter fencing, instruction
hierarchy, input classifier, deteksi kebocoran canary, filter egress, validasi
skema, dan tool allow-list. Keberhasilan serangan selalu machine-checkable
(canary, marker string, regex, panggilan tool terlarang, pelanggaran skema) —
tidak ada LLM-as-judge di angka utama.
Aturan penilaiannya juga disengaja: serangan hanya dihitung berhasil jika kriterianya terpenuhi di output yang benar-benar sampai ke user. Jika ada pertahanan yang memblokir request atau menekan respons, serangan itu gagal — yang diukur adalah ASR sistem, angka yang penting saat Anda memutuskan apa yang layak dikirim ke produksi.
Hasil terukur, dengan konteksnya
Pada target mock (127 serangan × 9 preset × 5 repetisi = 5.715 upaya ter-skor): ASR turun dari 69,4% tanpa pertahanan menjadi 5,7% dengan full stack — tetapi 36 dari 635 upaya tetap lolos, dan tidak ada konfigurasi yang mencapai nol. Dua tes di repo ini ada khusus untuk menjaga kejujuran itu: satu memastikan full stack tidak mencapai 0%, satu lagi menjaga regresi bug yang dulu membuat filter canary tampak memblokir 100% serangan.
Tiga hal dalam tabel itu lebih berharga dari headline-nya: pertahanan sisi input
terdegradasi tidak merata (output_only kuat secara umum tapi nyaris tak berguna
melawan encode dan rag); encoding adalah kategori paling bandel (tetap 18,8%
bahkan di bawah full stack); dan kolom spread bukan dekorasi — hierarchy_only
bergeser ±11,8 poin antar repetisi, jadi satu run tunggal bisa melaporkan angka
selusin poin dari kebenaran.
Run live
Diukur 2026-08-16 terhadap deepseek-v4-flash pada tiga kategori paling realistis
(61 serangan × 3 stack × 1 repetisi = 183 request): ASR overall hanya turun 4,9
poin (16,4% → 11,5%), dan agregatnya menyembunyikan alasannya — pertahanan
memangkas direct instruction override dari 25,0% ke 10,0%, tetapi tidak berbuat
apa-apa untuk indirect injection lewat dokumen terambil (20,0% di semua stack,
termasuk yang penuh). Kategori dengan model ancaman paling realistis justru yang
gagal dilindungi. Exfiltration terbaca 0,0% di mana-mana, dan itu keterbatasan
korpus — payload-nya butuh tool live atau URL fetch untuk berhasil — bukan hasil.
Peringatannya dinyatakan: --repeat 1, jadi tidak ada estimasi varians; satu
model, satu tanggal, satu korpus. Angka di stack Anda akan berbeda — itulah alasan
ini benchmark yang Anda jalankan, bukan klaim yang Anda kutip.
Menjalankannya sendiri
make install
make bench # korpus melawan target mock, offline, tanpa API key
make test # 126 tes, offline
Repo publik: github.com/ridwanspace/prompt-injection-bench.
Ada proses serupa di tim Anda?
Ceritakan alur kerja dan kendalanya. Kita mulai dengan lingkup yang bisa dijelaskan dan diperiksa.


