Prompt Injection: Risiko Utama Aplikasi AI

· Tim GunaStudio

Keamanan AI

Model bahasa bisa disuruh melakukan hal yang tidak kamu inginkan, bukan karena dibobol dari luar, tetapi karena instruksi jahat diselipkan lewat teks yang ia baca. Inilah prompt injection, dan ia menempati urutan pertama dalam daftar risiko aplikasi LLM versi OWASP.

Apa itu prompt injection

OWASP mendefinisikan Prompt Injection Vulnerability sebagai kondisi ketika prompt pengguna mengubah perilaku atau keluaran LLM dengan cara yang tidak diinginkan. Menariknya, masukan ini bisa memengaruhi model meski tidak terlihat oleh manusia, karena yang penting kontennya diproses oleh model. Jadi serangan tidak harus berupa teks yang bisa kamu baca dengan mata.

Wikipedia menggambarkannya sebagai eksploit keamanan siber dan vektor serangan, di mana masukan yang tampak tidak berbahaya dirancang untuk memicu perilaku tak diinginkan pada model pembelajaran mesin, terutama LLM. Inti persoalannya: model sulit membedakan instruksi dari pengembang dan masukan dari pengguna, apalagi membedakan masukan pengguna dari konten yang tidak ditulis langsung oleh pengguna.

Perlu dibedakan dari jailbreak. Wikipedia mengutip pandangan yang membedakan keduanya: jailbreak menembus pengaman model, sedangkan prompt injection memanfaatkan ketidakmampuan model membedakan instruksi sistem dari masukan pengguna. OWASP sendiri menyebut keduanya konsep yang berkaitan dan sering dipakai bergantian, dengan jailbreak sebagai salah satu bentuk prompt injection, yaitu saat penyerang membuat model mengabaikan protokol keamanannya sepenuhnya.

Jenis langsung dan tidak langsung

OWASP membagi prompt injection menjadi dua jenis. Direct prompt injection terjadi ketika masukan prompt pengguna secara langsung mengubah perilaku model. Masukan ini bisa disengaja, misalnya aktor jahat yang menyusun prompt untuk mengeksploitasi model, atau tidak disengaja, misalnya pengguna tanpa sadar memberi masukan yang memicu perilaku tak terduga.

Indirect prompt injection terjadi ketika LLM menerima masukan dari sumber eksternal, seperti situs web atau berkas. Konten eksternal itu bisa memuat data yang, saat ditafsirkan model, mengubah perilakunya. Seperti jenis langsung, serangan tidak langsung juga bisa disengaja atau tidak.

Wikipedia melukiskan hal serupa. Direct injection terjadi ketika masukan pengguna disalahartikan sebagai instruksi pengembang. Indirect injection terjadi ketika prompt berada di sumber data eksternal seperti surel dan dokumen, yang bisa disengaja untuk menghindari filter, atau tidak disengaja. Contoh yang diberikan: pelamar kerja menyisipkan teks tersembunyi berwarna putih di resume, sehingga AI penilai memberi nilai bagus.

Mengapa ini risiko utama

OWASP menempatkan Prompt Injection sebagai LLM01, peringkat pertama dalam daftar OWASP Top 10 untuk aplikasi LLM dan AI generatif. Peringkat ini penting: ia menandakan bahwa ini bukan masalah pinggiran, melainkan risiko yang dianggap paling mendesak untuk aplikasi berbasis LLM.

Ada alasan mengapa ia sulit diberantas. OWASP mencatat bahwa teknik seperti Retrieval Augmented Generation (RAG) dan fine-tuning bertujuan membuat keluaran LLM lebih relevan dan akurat, tetapi penelitian menunjukkan keduanya tidak sepenuhnya menghilangkan kerentanan prompt injection. Dengan kata lain, menambah konteks atau melatih ulang model bukan obat mujarab.

Dampak yang mungkin terjadi

OWASP menyebut dampak serangan prompt injection bisa sangat beragam, tergantung konteks bisnis dan seberapa besar kewenangan yang diberikan ke model. Beberapa akibat yang mungkin timbul: pengungkapan informasi sensitif, terungkapnya informasi tentang infrastruktur sistem AI atau system prompt, manipulasi konten yang berujung pada keluaran salah atau bias, pemberian akses tidak sah ke fungsi yang tersedia bagi LLM, eksekusi perintah sembarangan di sistem yang terhubung, serta manipulasi proses pengambilan keputusan penting.

Kemunculan AI multimodal menambah dimensi baru. OWASP memperingatkan penyerang bisa memanfaatkan interaksi antar modalitas, misalnya menyembunyikan instruksi di dalam gambar yang menyertai teks wajar. Kompleksitas sistem seperti ini memperluas permukaan serangan, dan model multimodal mungkin rentan terhadap serangan lintas modal yang sulit dideteksi dengan teknik saat ini.

Cara memitigasi

OWASP mengingatkan bahwa karena sifat teknologi generatif, belum ada cara pencegahan yang benar-benar sempurna. Namun ada sejumlah langkah untuk menekan dampaknya.

Batasi perilaku model. Berikan instruksi spesifik tentang peran, kemampuan, dan batas model di dalam system prompt, lalu minta model mengabaikan upaya mengubah instruksi intinya.

Tentukan dan validasi format keluaran. Minta format keluaran yang jelas, gunakan kode deterministik untuk memeriksa kesesuaiannya, dan pertimbangkan meminta penalaran serta sitasi sumber.

Terapkan penyaringan masukan dan keluaran. Bangun aturan untuk mengenali konten berbahaya, lalu saring masukan dan keluaran berdasarkan aturan itu.

Terapkan kontrol hak akses dan prinsip hak paling rendah. Berikan aplikasi token API-nya sendiri dan tangani fungsi di dalam kode, bukan diserahkan ke model. Batasi hak akses model seperlunya saja.

Minta persetujuan manusia untuk tindakan berisiko tinggi. Untuk operasi istimewa, sediakan kontrol manusia di dalam alur agar tindakan tak sah bisa dicegah.

Pisahkan dan tandai konten eksternal. Konten yang tidak tepercaya sebaiknya dipisahkan dan ditandai dengan jelas agar pengaruhnya terhadap prompt pengguna terbatas.

Rutinkan pengujian adversarial. Lakukan pengujian penetrasi dan simulasi serangan secara berkala, dengan memperlakukan model sebagai pengguna tak tepercaya untuk menguji batas kepercayaan dan kontrol akses.

Prinsip besarnya satu: jangan memperlakukan masukan mentah sebagai instruksi. Semua yang masuk dari pengguna maupun sumber eksternal harus dianggap tidak tepercaya sampai terbukti sebaliknya.

Menyentuh sisi produksi

Saat aplikasi naik ke produksi, praktik keamanan umum tetap relevan. OpenAI dalam panduan production best practices menekankan pentingnya penanganan data yang aman, termasuk pertimbangan penyimpanan, transmisi, dan retensi, serta praktik pengodean aman seperti sanitasi masukan dan penanganan galat yang benar. Sanitasi masukan ini sejalan dengan semangat menolak mempercayai masukan mentah.

Yang perlu diingat

Prompt injection bukan cacat yang bisa ditambal sekali lalu selesai. Karena model pada dasarnya memproses teks, dan teks jahat bisa datang dari mana saja, pertahanan terbaik bersifat berlapis: batasi kewenangan, validasi keluaran, pisahkan data dari instruksi, dan perlakukan setiap masukan sebagai sesuatu yang harus dicurigai. Dengan begitu, dampak serangan bisa ditekan meski pencegahan sempurna belum tentu tercapai.