Anda menyuruh agen Anda memperbaiki kesalahan. Salah satunya ditulis oleh penyerang.
Laporan kesalahan Sentry palsu menipu agen pengekodean AI untuk menjalankan kode penyerang dengan hak akses penuh pengembang, 85% dari waktu. Injeksi bukanlah bencana itu; kredensial berkelanjutan yang dapat dijangkau agen yang dibajak itulah bencananya.
Seorang pengembang membuka agen pengekodean AI-nya dan mengetik permintaan paling biasa di dunia: "lihat kesalahan Sentry yang belum terselesaikan dan perbaiki." Agen itu menarik daftar kesalahan melalui konektor Sentry-nya, membaca isu teratas, mengikuti langkah perbaikan yang tertulis langsung di dalam laporan itu, lalu menjalankannya. Setengah menit kemudian ia telah mengeksekusi kode penyerang di mesin pengembang tersebut, dengan hak akses penuh pengembang itu, dan tidak ada seorang pun yang melakukan kesalahan.
Itulah Agentjacking, yang diungkapkan bulan ini oleh Tenet Security, dan berhasil 85% dari waktu terhadap tiga agen pengekodean paling populer di pasaran: Claude Code, Cursor, dan Codex [1][2].
Apa yang sebenarnya terjadi
Pertama, apa itu Sentry: salah satu layanan pemantauan kesalahan yang paling luas digunakan di perangkat lunak. Ketika aplikasi Anda melempar kesalahan atau crash, Sentry menangkapnya dan menyusun laporan yang ditriage oleh pengembang Anda — layanan itu ada di dalam sebagian besar aplikasi yang Anda sentuh setiap hari. Untuk mengirimkan laporan itu, setiap aplikasi menyematkan sebuah DSN: kunci sisi klien yang sengaja dikirimkan di dalam sumber situs web Anda, agar browser dapat melaporkan kesalahan pulang. Siapa pun dapat membacanya. Dan siapa pun yang memegangnya dapat melakukan POST sebuah event kesalahan ke proyek Sentry Anda.
Itulah seluruh kunci serangan ini. Tenet membuat sebuah event kesalahan palsu yang field pesannya diformat tampak persis seperti panduan perbaikan Sentry sendiri: markdown yang rapi, "perbaikan yang direkomendasikan", sebuah perintah untuk dijalankan. Mereka mengirimkannya dengan DSN publik itu. Lalu mereka menunggu hal paling wajar yang dilakukan seorang pengembang — meminta agen mengosongkan antrean kesalahan.
Agen itu menanyai Sentry melalui konektor MCP-nya. Konektor itu menyerahkan kesalahan itu kembali sebagai keluaran sistem yang tepercaya. Agen tidak dapat membedakan laporan Sentry asli dari yang dipalsukan; keduanya sama bentuknya hingga ke byte. Jadi ia melakukan apa yang diperintahkan dan menjalankan "perbaikan" itu, biasanya sebuah panggilan npx ke paket penyerang. Dari sana ia memiliki segala yang dimiliki pengembang: variabel lingkungan, kredensial Git, URL repositori pribadi, kunci cloud di ~/.aws/.
Tenet menemukan 2.388 organisasi dengan DSN yang dapat disuntik, dari pengembang independen hingga Fortune 100. Dalam pengujian terkontrolnya, agen benar-benar mengeksekusi instruksi yang disuntikkan di perusahaan nyata — termasuk, menurut Tenet, sebuah perusahaan teknologi Fortune 100 senilai $250 miliar yang agen AI-nya membaca laporan bug palsu dan menjalankan kode Tenet di dua mesin korporatnya [1][3]. Diungkapkan kepada Sentry pada 3 Juni, perusahaan itu mengakuinya di hari yang sama dan menolak memperbaikinya hingga ke akar, menyebut masalah itu "secara teknis tidak dapat dipertahankan". Perusahaan itu merilis sebuah filter konten yang memblokir satu string payload tertentu [4].
Ini bukan Sentry yang ceroboh
Berikut bagian yang tidak nyaman: tidak ada satu pun dalam rantai itu yang merupakan bug. DSN itu memang dimaksudkan untuk publik. Server MCP itu memang dimaksudkan untuk mengembalikan data kesalahan Anda. Agen itu memang dimaksudkan untuk bertindak berdasarkan diagnostik yang Anda minta untuk diperbaiki. Setiap langkah terotorisasi, dan justru karena itu tidak ada firewall, tidak ada EDR, tidak ada system prompt yang menangkapnya.
Kecacatannya bersifat struktural, dan itu bukan milik Sentry semata. Alat apa pun yang memberi agen teks yang dapat dipengaruhi pihak luar — pelacak kesalahan, antrean isu, halaman web yang di-scrape, dokumen bersama — adalah kanal injeksi, dan agen memperlakukan semuanya sebagai satu aliran instruksi yang tidak dibedakan. Prompt injection, dua tahun memasuki era agen, masih belum terpecahkan: Anda tidak dapat secara andal menjaga teks yang bermusuhan keluar dari penalaran sebuah model. Asumsikan Anda tidak akan bisa.
Injeksi bukanlah bencana itu
Berikut bagian yang layak direnungkan. Alasan Agentjacking adalah kebakaran lima alarm bukan karena agen itu tertipu. Melainkan apa yang dapat dijangkau oleh agen yang tertipu itu. Ia berjalan dengan akses berkelanjutan penuh milik pengembang: setiap kunci di lingkungan, setiap file kredensial di disk, seluruh keyring yang tinggal satu perintah jauhnya.
Radius ledakan itu bukan hukum alam. Itu adalah sebuah konfigurasi. Agen itu punya akses berkelanjutan ke semuanya karena begitulah cara kredensial disimpan saat ini — ambien, di dalam mesin, dapat dibaca oleh apa pun yang berjalan di sana. Cabut itu, dan pembajakan yang sama akan menabrak tembok.
Dirancang untuk ini, secara sengaja
Kredensial Clavitor tidak pernah berada di lingkungan tempat agen berjalan. Tidak ada ~/.aws/credentials untuk dibaca, tidak ada API key di variabel env untuk dieksfiltrasi, karena nilai rahasia tidak pernah mendarat di tempat kode dieksekusi — agen mendapatkan hasil dari penggunaan sebuah kredensial, bukan kredensial itu sendiri. Ia hanya dapat menjangkau satu hal yang menjadi namanya, sehingga tidak dapat mengenumerasi penyimpanan untuk mencari apa lagi yang ada di sana. Dan pemberiannya berskala terbatas serta dapat dicabut, sehingga sesi yang mulai berperilaku seperti penyerang dapat dipotong di tengah aksi.
Berikut bagian yang jujur: ini tidak menghentikan injeksi, dan ini tidak menghentikan agen yang dibajak untuk menjalankan sebuah perintah. Prompt injection belum terpecahkan dan kami tidak mengklaim menyelesaikannya. Yang berubah adalah imbalannya. Kode penyerang tetap berjalan — dan menemukan lingkungan yang tidak menyimpan apa pun yang layak dicuri. Pembajakan berhasil dan perampokannya gagal.
Kami menuliskan aturan yang harus dipenuhi sebuah sistem kredensial begitu agen itu sendiri dapat diputarbalikkan melawan Anda, dimulai dari rahasia yang tidak pernah hidup di tempat kode berjalan, dan agen yang hanya pernah menjangkau apa yang menjadi namanya. Uji sistem Anda terhadap aturan-aturan itu: clavitor.ai/rules.
Pelajarannya bukan "tambal Sentry"
Sentry tidak dapat memperbaiki ini, dan mereka mengatakan demikian. Dan alat beracun berikutnya bukanlah Sentry. Selama agen Anda membawa kredensial berkelanjutan yang ambien, setiap alat tepercaya yang mereka baca adalah pistol yang sudah terisi, dan prompt injection adalah pemicu yang tidak dapat Anda kunci.
Anda tidak akan bisa menjaga teks berbahaya tetap keluar. Jadi berhentilah menyimpan kredensial dalam jangkauan agen yang membacanya.
Clavitor (@clavitorai) adalah brankas kredensial yang dibangun untuk agen AI, dan melawan mereka. clavitor.ai
Sumber
[1] Tenet Security — "Agentjacking: hijacking coding agents with fake Sentry errors" (keberhasilan 85%; 2.388 organisasi; mekanisme): https://tenetsecurity.ai/blog/agentjacking-coding-agents-with-fake-sentry-errors/
[2] The Hacker News — "Agentjacking Attack Tricks AI Coding Agents Into Running Malicious Code": https://thehackernews.com/2026/06/agentjacking-attack-tricks-ai-coding.html
[3] The New Stack — "A public Sentry key is all it takes to hijack Claude Code, Cursor, and Codex": https://thenewstack.io/agentjacking-sentry-mcp-attack/
[4] Infosecurity Magazine — "New 'Agentjacking' Attacks Could Hijack AI Coding Agents" (tanggapan Sentry): https://www.infosecurity-magazine.com/news/agentjacking-attacks-hijack-ai/