Prompt injection: ketika bahasa menjadi permukaan serangan
Model bahasa tidak membedakan perintah dan data. Keduanya masuk lewat pintu yang sama. Di situlah celahnya berada.
Masalah tua dengan wajah baru
Kalau kamu pernah belajar SQL injection, kamu sudah paham prompt injection. Polanya identik: data yang dikontrol pengguna dicampur dengan instruksi yang dipercaya sistem, dan batas di antara keduanya runtuh.
Bedanya, pada LLM tidak ada tanda kutip yang bisa di escape. Semua adalah teks, dan teks adalah bahasa.
Dua varian yang perlu dibedakan
Direct injection datang dari pengguna langsung: teks yang menyuruh model melupakan aturan sebelumnya. Indirect injection lebih berbahaya: instruksi bersembunyi di konten yang model baca, misalnya halaman web, PDF, atau email yang dirangkum oleh asisten AI.
Varian kedua inilah yang membuat kategori ini serius. Korban tidak melakukan apa pun selain membiasakan asisten membaca sesuatu.
Mitigasi yang realistis
Tidak ada perbaikan tunggal. Yang berhasil adalah lapisan-lapisan kecil yang diterapkan konsisten.
- Pisahkan konten tidak terpercaya dari instruksi sistem, misalnya dengan penanda eksplisit dan template yang jelas.
- Terapkan privilege minimal: model yang tidak boleh mengirim email jangan diberi tool email.
- Minta konfirmasi manusia untuk aksi berisiko tinggi, jangan pernah otomatis penuh.
- Uji prompt injection sebagai kasus uji biasa di pipeline, bukan sebagai pengecualian.
Sikap saya
Saya memperlakukan output model seperti input pengguna: tidak pernah dipercaya mentah, selalu divalidasi sebelum dipakai untuk keputusan atau aksi. Prinsip lama ini ternyata masih paling ampuh di era AI.