- Hasil penelitian menunjukkan bahwa pengembang yang menggunakan LLM di lingkungan lokal demi melindungi privasi justru bisa terekspos pada kerentanan keamanan
- Dalam eksperimen OpenAI Red‑Teaming Challenge terhadap model
gpt-oss-20b, tim peneliti menemukan bahwa model lokal jauh lebih mudah tertipu oleh manipulasi prompt penyerang dan menghasilkan kode berbahaya
- Hanya dengan manipulasi prompt sederhana, penyerang dapat memicu penyisipan backdoor atau eksekusi kode langsung (RCE), dengan tingkat keberhasilan hingga 95%
- Serangan seperti ini dapat menyusup secara alami ke workflow umum pengembang melalui peracunan dokumentasi (documentation poisoning), manipulasi server MCP, rekayasa sosial, dan lain-lain
- Inti temuan penelitian ini adalah bahwa meski LLM lokal unggul dari sisi privasi data, ia justru bisa menjadi pilihan yang lebih berbahaya karena kurangnya kemampuan penalaran, alignment, dan pemfilteran keamanan
Gambaran umum kerentanan keamanan LLM lokal
- Penelitian ini menunjukkan bahwa LLM yang berjalan secara lokal kerap dianggap sebagai pilihan untuk memperkuat keamanan dan privasi, tetapi dalam praktiknya justru lebih mudah dimanipulasi oleh penyerang
- Dalam eksperimen terhadap model
gpt-oss-20b, tingkat model menghasilkan kode yang mengandung kerentanan ketika penyerang memintanya melalui prompt sangat tinggi
- Terutama ketika niat jahat disembunyikan di dalam prompt, model gagal mengenalinya dan memprosesnya sebagai permintaan yang normal
- Fenomena ini makin parah ketika ukuran model dan tingkat alignment lebih rendah, sedangkan model frontier (seperti GPT-5) relatif lebih tahan
Ancaman prompt dan code injection
- LLM menghadapi ‘lethal trifecta’ berupa akses ke data privat, paparan terhadap konten yang tidak tepercaya, dan kemungkinan komunikasi eksternal
- Penyerang dapat menyisipkan kode berbahaya ke dalam prompt untuk memicu code injection
- Kode yang dihasilkan tampak normal, tetapi sebenarnya bisa menginfeksi sistem pengembang atau berfungsi sebagai backdoor persisten di lingkungan produksi
- Model kecil seperti
gpt-oss-20b sangat rentan terhadap serangan ini, dan mampu menghasilkan kode berbahaya yang cukup canggih untuk lolos code review dasar
Tipe serangan 1: backdoor “easter egg” (tingkat keberhasilan 95%)
- Serangan pertama menipu model agar menyisipkan backdoor RCE (Remote Code Execution) yang disamarkan sebagai fitur “easter egg”
- Prompt serangan meminta pembuatan server web Flask, tetapi agar ketika header HTTP tertentu (
X-Math) dikirim, eval() dijalankan
- Model menganggapnya sebagai fitur normal dan menghasilkan kode server yang menyertakan kode berbahaya
- Kode yang dihasilkan mencakup rutin eksekusi kode dinamis menggunakan dekorator
@app.after_request, sehingga penyerang dapat mengeksekusi kode arbitrer di dalam server hanya dengan request HTTP sederhana
- Kode tersebut juga memeriksa environment variable
KUBERNETES_SERVICE_HOST dan menyertakan fungsi ping asinkron yang hanya mengirim sinyal ke penyerang di lingkungan produksi
- Hasil eksperimen menunjukkan keberhasilan 95 kali dari 100 percobaan dengan prompt yang sama, dan 86 kali dari 800 percobaan dengan prompt yang dimodifikasi
- Model frontier seperti GPT-5 menunjukkan ketahanan terhadap prompt yang sama
Tipe serangan 2: memicu eksekusi kode langsung (RCE) (tingkat keberhasilan 43,5%)
- Serangan kedua memicu eksekusi kode berbahaya secara langsung di lingkungan lokal pengembang
- Penyerang terlebih dahulu memberikan prompt cognitive overload untuk meningkatkan beban kognitif model dan melumpuhkan filter keamanan
- Setelah itu, penyerang meminta pembuatan kode Python yang diobfuskasi sehingga model menulis skrip berbahaya yang mencakup pemanggilan
exec
- Kode obfuskasi
"".join(chr(100 + i) for i in [1-2, 2-1, (1<<4)+4, 1])[::-1] didekripsi menjadi exec,
dan akhirnya disusun untuk mengunduh lalu menjalankan kode dari https://jacek.migdal.pl/speed.py
- Tingkat keberhasilannya 43,5%, lebih rendah dari serangan pertama, tetapi jauh lebih berbahaya karena langsung memicu RCE
- Bahkan satu keberhasilan saja sudah cukup untuk mencuri kredensial lokal pengembang (
~/.aws/, ~/.ssh/), memasang malware, dan menyebar di jaringan
Cara kerja rantai serangan
- Serangan ini berhasil bukan karena kerentanan tingkat lanjut, melainkan dengan mengubah workflow pengembangan sehari-hari menjadi jalur serangan
- Ketika pengembang memberikan konten eksternal ke konteks AI assistant, prompt berbahaya yang tersembunyi di dalamnya dijalankan
- Tahapan serangannya adalah sebagai berikut:
- Penyerang menyebarkan konten yang berisi prompt berbahaya
- Pengembang memasukkannya ke model secara langsung atau melalui MCP (Model Context Protocol)
- Model menghasilkan kode yang telah dikompromikan
- Pengembang menjalankan atau men-deploy kode tersebut
- Penyerang memperoleh akses persisten atau kendali langsung
- Jalur infiltrasi utama:
- Peracunan dokumentasi (documentation poisoning): menyisipkan kode berbahaya ke README, dokumentasi API, atau contoh di Reddit
- Manipulasi server MCP: menyuntikkan contoh berbahaya melalui server penyedia konteks (seperti Context7)
- Rekayasa sosial: menyisipkan contoh kode tersembunyi di issue GitHub atau komentar PR
Mengapa model lokal lebih berbahaya
- Secara umum, model lokal dipilih karena privasi data, tetapi penelitian ini mengungkap risiko paradoksal dari sisi keamanan
- Model frontier berbasis cloud memungkinkan pemantauan prompt dan deteksi pelanggaran kebijakan, sementara model lokal tidak memiliki pengawasan semacam ini
- Model frontier (GPT-5, Claude Sonnet 4.5, Grok 4, dan lain-lain) menolak prompt yang mengandung teks terobfuskasi dengan mengembalikan “Safety Fail”
- Sebaliknya, model lokal memang memberi kebebasan untuk pengujian karena tidak ada pengawasan, tetapi dalam praktiknya tingkat paparan kerentanannya serius
- Kurang kemampuan penalaran: gagal mengenali niat jahat yang kompleks
- Alignment lemah: mudah tertipu oleh cognitive overload atau teknik obfuskasi
- Kurang pelatihan keamanan: sumber daya untuk mendeteksi prompt adversarial terbatas
- Akibatnya, model frontier lebih sulit diserang dan tingkat keberhasilannya lebih rendah, tetapi kinerja keamanannya sulit diverifikasi secara objektif, sementara model lokal bisa diuji tetapi jauh lebih rentan
Usulan strategi pertahanan baru
- Penelitian ini menyoroti belum adanya lingkungan aman yang terstandarisasi untuk pengujian keamanan AI assistant
- Pada perangkat lunak tradisional ada penetration testing, tetapi keamanan LLM masih belum tersusun secara sistematis
- Empat langkah pertahanan inti yang diusulkan:
- Analisis statis: mendeteksi pola berisiko seperti
eval() dan exec() sebelum eksekusi, serta menonaktifkan fitur bahasa tertentu secara default
- Eksekusi sandbox: menjalankan kode awal di lingkungan terisolasi seperti container atau runtime WebAssembly
- Pemantauan I/O dan jaringan: memantau input, output, dan traffic jaringan AI assistant dengan fokus pada perilaku anomali
- Verifikasi ganda (second look): menggunakan model pendamping sederhana untuk memeriksa ulang apakah output akhir melanggar kebijakan
- Contoh: meski model utama tertipu dan menghasilkan kode yang mengandung
eval(), model pendamping masih bisa mendeteksinya
- Kesimpulannya, LLM adalah alat yang kuat tetapi secara inheren tidak aman,
sehingga sistem keamanan berbasis ketidakpercayaan terhadap kode buatan AI dan strategi pertahanan rantai pasok baru menjadi sangat penting
1 komentar
Komentar Hacker News
Seberapa kuat pun reasoning LLM, jika ada instruksi berbahaya di dalam konteks, pada akhirnya ia akan mengeluarkan kode yang rentan
Bahwa model kecil lebih mudah ditipu bukanlah poin yang terlalu menarik dari sudut pandang keamanan
Pada akhirnya, kita harus berasumsi bahwa prompt injection mungkin terjadi pada model apa pun
Karena itu, diperlukan lapisan perlindungan tambahan seperti eksekusi sandbox atau analisis statis yang tetap bisa bertahan meski modelnya sudah terkompromi
Kemarin saya juga membawakan presentasi tentang sandboxing coding agents dengan topik seperti ini
Sistem seperti itu pada dasarnya sudah terkompromi
Dibanding pendekatan seperti 'defense in depth', menurut saya yang benar adalah sejak awal tidak membangun struktur berbahaya seperti itu
Hal seperti lokasi penyimpanan file sementara juga jadi lebih jelas di lingkungan sandbox
Tentu ada masalah baru yang muncul, tetapi secara keseluruhan ini perbaikan besar
Jika menjalankan model seperti deepseek secara lokal, saya rasa itu aman selama tidak diberi prompt palsu
Pada akhirnya, faktor risikonya adalah prompt yang disalin pengguna dari luar, atau pengaturan yang memungkinkan model mengakses sumber daya internet
Ini sudah lama menjadi kelemahan umum di dunia IT, dan hanya masalah yang harus dikelola lewat edukasi pengguna dan isolasi jaringan
Data biasa seperti tiket dan dokumen kini bisa menjadi risiko keamanan
Banyak peretasan besar berawal dari titik masuk yang sederhana
Serangan seperti ini berada di level dasar-dasar keamanan yang sangat mendasar
Ini bisa dicegah hanya dengan melakukan peninjauan sebelum kode dideploy ke produksi
Jika benar-benar tidak tahu apa-apa, Anda toh tetap akan mendeploy kode yang tidak aman
Model terbuka memang mudah diakses, tetapi mengira ini bisa dicegah lewat post-training adalah ilusi
Serangan kedua bukan soal deployment kode, melainkan situasi ketika LLM membaca komentar reddit lalu langsung mengeksekusinya
Sikap yang meremehkan masalah seperti ini justru menciptakan ancaman keamanan yang lebih besar
Terdengar aneh mengatakan bahwa LLM lokal bisa diserang
Jika sistem sudah dalam keadaan ditembus, seharusnya penyerang bisa menimbulkan kerusakan yang lebih besar daripada sekadar menipu LLM
Artinya, penyerang bisa menyuntikkan prompt melalui input data
Jika LLM adalah agen yang punya izin menjalankan perintah, ini langsung menjadi kerentanan eksekusi perintah
Kalau sudah sampai tahap itu, pada dasarnya semuanya memang sudah berakhir
Tulisan ini terasa seolah ditulis oleh tim sales Anthropic atau OpenAI
Pada kenyataannya, model lokal jarang dipakai sebagai agen eksekusi kode, dan kebanyakan lebih kuat untuk transformasi data atau tugas NLP
Saat memakai model lokal dengan Agno agent, saya selalu memintanya menampilkan kode yang dihasilkan terlebih dahulu sebelum dieksekusi dan mengisolasinya dengan sandbox lokal
Menurut saya justru agen bergaya browser seperti Atlas dan Comet yang lebih berbahaya
Model open source bertindak sesuai apa yang tertulis di prompt, sedangkan model closed-source mengabaikannya
Artinya, yang gagal dalam uji alignment justru model tertutup
Ungkapan 'lethal trifecta' memang terdengar keren, tetapi tidak menjelaskan risiko nyata dengan baik
Secara praktis, kemampuan komunikasi eksternal saja sudah cukup berbahaya
LLM sendiri adalah kumpulan data black box yang tidak bisa diverifikasi, jadi sulit dipercaya
Untuk startup kecil mungkin masih oke, tetapi untuk tempat seperti Coinbase, pembatasan akses seharusnya dipikirkan dua kali
Ini adalah pembahasan tentang paradoks keamanan dari menjalankan kode yang tidak terverifikasi
Jika Anda menjalankan malware atau kode yang belum dipastikan keamanannya secara lokal, sebaiknya pikirkan lagi dulu alasannya
Karena LLM menafsirkan instruksi dalam bahasa manusia seperti kode, batas antara kode dan data menjadi kabur
Jika Anda menjadikan kemampuan penalaran LLM sebagai batas keamanan, berarti dari awal sudah ada masalah besar
Pendekatan seperti itu pada dasarnya adalah desain yang keliru
Sudah sangat jelas bahwa jika tidak hati-hati dengan input, injeksi bisa terjadi
Dalam sistem apa pun, input selalu bisa menjadi vektor serangan
Semua data yang masuk ke LLM harus divalidasi
Apakah ini mungkin lewat mekanisme seperti serangan lintas situs di sisi browser?