Ilustrasi teknis abstrak pada bidang biru navy gelap: sebuah bidang batas transulen yang tinggi berdiri di tepi kiri, digambar sebagai garis luar pucat tipis dengan isian buram. Satu garis putih melintasinya dan membentang ke kanan melewati empat modul sian bercahaya yang identik tersusun dalam busur dangkal, masing-masing membawa lencana heksagonal putih identik yang melayang di atasnya. Modul ketiga telah bergeser setengah langkah ke kiri, meninggalkan garis luar bayangan pucat samar di tempatnya sebelumnya, dan lencana heksagonal di atasnya bersinar amber. Tidak ada teks, orang, atau logo organisasi yang muncul. Logo OrcaRouter dikomposisikan di sudut kanan bawah.
AI Safety Incidents

Plugin4Shell: Empat Agen Pengodean AI Mempercayai Pin yang Tidak Pernah Mereka Periksa

Penulis

Alistair Wren

Tanggal Terbit

Model terbaru · 20Lihat semua model →
Benchmark: Artificial Analysis · diperbarui setiap hari
Kembali ke semua artikel

Pada 17 September 2026, AIR Security, sebuah startup yang membangun perkakas keamanan untuk agen AI perusahaan, menerbitkan riset yang mendeskripsikan Plugin4Shell — celah eksekusi kode jarak jauh tanpa klik pada empat agen pengodean AI: Claude Code dari Anthropic, Codex dari OpenAI, GitHub Copilot, dan Gemini CLI dari Google. Bug ini bukan berada di model mana pun. Bug ini terletak pada checkout git yang dilakukan setiap agen saat memasang plugin, dan pada fakta bahwa tidak satu pun dari keempatnya memverifikasi bahwa kode yang diterimanya adalah kode yang telah dipin. Dua dari keempatnya sudah memiliki patch saat riset dipublikasikan. Dua lainnya belum. Insiden ini adalah salah satu entri dalam Orca AI Incident Archive, yang mencatatnya sebagai kerentanan rantai pasok berseveritas tinggi tanpa laporan eksploitasi.

Apa yang sebenarnya salah dilakukan oleh para agen

Setiap agen yang terdampak menginstal plugin dari marketplace, dan setiap marketplace menyematkan plugin ke git commit tertentu — SHA 40 karakter — setelah plugin ditinjau. Penyematan itulah keseluruhan model keamanannya: peninjau menyetujui satu versi yang tidak dapat diubah, dan agen seharusnya tetap menjalankan versi tersebut meskipun repositori di baliknya nanti berubah. AIR menggambarkan cacat ini sebagai bypass penyematan SHA plugin. Agen melakukan checkout tepat pada commit yang disematkan marketplace tetapi tidak pernah memverifikasi bahwa working tree yang akhirnya diperoleh adalah commit tersebut. Dalam kata-kata para peneliti, agen "melakukan checkout tepat pada commit yang disematkan marketplace tetapi tidak pernah memverifikasi bahwa checkout tersebut benar-benar mendarat di sana, sehingga penyerang yang mengendalikan repo plugin membuat checkout mengarah ke kode berbahaya sementara pin tetap terlihat dipatuhi."

Git mengisi celah ini. Ketika sebuah nama merupakan branch yang valid sekaligus objek commit, git lebih memilih branch tersebut dan hanya mencetak peringatan ambiguitas. Penyerang yang mengendalikan repositori plugin membuat branch yang namanya persis sama dengan SHA 40-heks yang dipatok, mengarahkannya ke kode berbahaya, dan menjadikannya branch default repositori. Clone biasa kemudian membawa branch itu ke lokal dengan nama berbentuk SHA, dan checkout berikutnya akan me-resolve ke branch tersebut. Commit yang dipatok itu sendiri bisa tetap tidak tersentuh, sehingga tidak ada yang tampak salah pada versi yang telah ditinjau. Menurut AIR, dua kondisi harus terpenuhi: branch bernama SHA itu harus menjadi branch default, karena branch non-default hanya di-fetch sebagai ref remote-tracking dan checkout akan fallback ke commit yang sebenarnya; dan host git harus menerima nama branch 40-heks. GitHub menolak nama seperti itu mentah-mentah. Bitbucket dan server git yang dihosting sendiri tidak.

Gemini CLI gagal melalui jalur yang berbeda. Gemini CLI mengambil commit yang dipatok, mencatatnya dalam file FETCH_HEAD repositori, lalu menjalankan checkout terhadap FETCH_HEAD — checkout yang tidak harus membaca file tersebut. Repositori yang cabang default-nya sendiri bernama FETCH_HEAD mengalihkan checkout ke konten yang dikendalikan penyerang dan diam-diam membuang commit yang telah diambil. Uraian Cybersecurity News tentang mekanisme tersebut cocok dengan milik AIR, termasuk perbedaan antara kedua varian.

Mengapa tidak ada yang perlu mengeklik apa pun

Checkout yang sama dijalankan lagi selama pembaruan otomatis plugin di latar belakang, yang merupakan default di Claude Code dan Codex. Itulah yang membuat serangan ini zero-click, bukan sekadar senyap: ketika sebuah marketplace menaikkan SHA yang dipin ke versi baru yang rutin, setiap agen yang sudah memasang plugin tersebut akan menjalankan ulang checkout tanpa prompt dan tanpa tindakan pengguna. Inti argumen AIR adalah bahwa korban tidak perlu memasang apa pun secara sembarangan. Mereka hanya perlu telah memasang satu plugin, dari marketplace yang mereka percaya, yang telah ditinjau dan dipin persis seperti yang dimaksudkan oleh desain.

Ada dua cara untuk mencapai posisi itu, dan keduanya tidak memerlukan kendali atas marketplace. Pada cara pertama, penyerang menerbitkan plugin yang benar-benar tidak berbahaya yang lolos peninjauan, membangun basis instalasi, merilis pembaruan normal, dan baru setelah itu membuat cabang yang dinamai secara jahat. Pada cara kedua, penyerang mengambil alih repositori di balik plugin yang ditulis orang lain dan sudah dipercaya oleh marketplace, lalu mendorong versi jahat itu ke semua orang yang telah menginstalnya.

Angka di balik kedua jalur tersebut berasal dari pekerjaan AIR sebelumnya, bukan dari Plugin4Shell. Dalam kampanye yang oleh perusahaan disebut The Story of Skills, disebutkan bahwa sebuah plugin yang mereka buat menyebar ke lebih dari 26.000 agen sebelum ditarik. Dalam SkillJacking, dilaporkan bahwa 925 skill yang sudah digunakan secara aktif telah diambil alih dari pengelola aslinya, menjangkau 134.000 agen. Judul AIR untuk posting Plugin4Shell mengklaim "jutaan agen terdampak"; penelitian tersebut tidak memberikan jumlah instalasi yang terpapar, dan tidak ada pihak ketiga yang menerbitkannya.

Garis waktu, dan tempat perbaikan diterapkan

HTML card headed 'Six weeks from proof of concept to public' with kicker 'Plugin4Shell · AIR Security · disclosure sequence'. A vertical timeline in cyan lists six dated entries: May 2026, working proof-of-concept against all four agents; June 2026, coordinated disclosure to Anthropic, OpenAI, Google and Microsoft; 17 June 2026, Anthropic confirms the fix in Claude Code 2.1.179; 4 August 2026, Google confirms no fix will ship because Gemini CLI is being deprecated; 12 August 2026, Codex 0.146.0 verified fixed; 17 September 2026, AIR Security publishes the research. A seventh entry in amber marks 18 September 2026, when The Register, Help Net Security, InfoWorld and Cybersecurity News reported it. An amber box headed 'Still open at publication' records that no CVE identifier had been assigned, no vendor security advisory had been published, and no source answers whether updating an affected agent removes a plugin that has already been swapped. A footer cites the AIR Security disclosure timeline and the outlets that reported it. The OrcaRouter logo is composited in the bottom-right corner.

AIR menyatakan menemukan celah tersebut pada Mei 2026 dengan eksploit proof-of-concept yang berfungsi terhadap keempat agen, dan mengungkapkannya kepada setiap vendor pada bulan berikutnya melalui pengungkapan terkoordinasi. Anthropic mengonfirmasi perbaikannya di Claude Code 2.1.179 pada 17 Juni. Google memberi tahu AIR pada 4 Agustus bahwa tidak ada perbaikan yang akan dirilis, karena Gemini CLI sedang dihentikan. Codex 0.146.0 terverifikasi telah diperbaiki pada 12 Agustus. Microsoft belum merilis perbaikan untuk GitHub Copilot.

Versi patch adalah satu-satunya konfirmasi publik bahwa cacat tersebut nyata pada dua produk yang memperbaikinya. Entri changelog yang diterbitkan Anthropic untuk 2.1.179 mencantumkan penanganan koneksi terputus, pengguliran WSL2, perbaikan glob sandbox dan antarmuka, serta tidak menyebut pinning, verifikasi plugin, atau perbaikan keamanan apa pun. The Hacker News membuat pengamatan yang sama, menurut laporan The Next Web. Pada saat publikasi riset tersebut, belum ada pengenal CVE yang ditetapkan, dan catatan riset Cloud Security Alliance tentang cacat itu mengulangi bahwa tidak ada pengenal yang ada tiga bulan setelah vendor diberi tahu.

Empat vendor, tiga jawaban berbeda

HTML card headed 'One flaw, four agents, two patches' with kicker 'Plugin4Shell · vendor status at disclosure · 17 September 2026'. A four-row table gives agent, vendor, status and mechanism variant: Claude Code from Anthropic, fixed in 2.1.179 on 17 June 2026, branch named as the pinned SHA; Codex from OpenAI, fixed in 0.146.0 and verified on 12 August 2026, same branch variant; GitHub Copilot from Microsoft, no fix shipped at disclosure, same branch variant; Gemini CLI from Google, no fix and the product deprecated as of 4 August 2026, separate FETCH_HEAD variant. A note beneath reads that the branch-named-as-a-hash variant needs a git host that accepts a 40-character branch name, which GitHub does not and Bitbucket and self-hosted git do, that background auto-update is on by default only for Claude Code and Codex, and that Antigravity, the replacement Google points to, has no marketplace plugin SHA pinning to bypass. A footer cites AIR Security, The Register and Help Net Security. The OrcaRouter logo is composited in the bottom-right corner.

Google melangkah lebih jauh daripada sekadar menolak menambal. Google menghentikan (deprecate) Gemini CLI, yang berarti instalasi yang sudah ada tetap terekspos selama orang-orang terus menjalankannya. Sarannya adalah bermigrasi ke Antigravity, lingkungan pengembangan agentic yang lebih baru, yang menurut AIR tidak dapat dijangkau oleh serangan tersebut karena tidak memiliki pinning SHA plugin marketplace yang bisa dilewati.

Posisi GitHub kembali berbeda. Juru bicara GitHub mengatakan kepada The Register bahwa platform tersebut tidak mengizinkan pengguna membuat nama cabang atau tag yang menyerupai SHA commit, dan bahwa "mitigasi ini memastikan kerentanan yang dilaporkan tidak dapat dieksploitasi di GitHub." AIR mempersoalkan cakupan mitigasi tersebut, bukan keberadaannya: marketplace dapat dihosting di platform lain seperti Bitbucket, kata para peneliti kepada The Register, dan GitHub Copilot masih mendukung marketplace dari platform-platform tersebut, sehingga varian nama cabang tetap dapat dijangkau oleh pengguna Copilot. AIR juga mengatakan dokumentasi Anthropic sendiri mencantumkan Bitbucket dan git yang di-hosting sendiri sebagai backend marketplace yang valid; dokumentasi marketplace Anthropic saat ini menjelaskan penambahan marketplace dari URL repositori git, bukan hanya dari GitHub. Microsoft tidak menanggapi permintaan komentar The Register, dan AIR mengatakan pihaknya belum menerima tanggapan dari Microsoft sejak melaporkan masalah tersebut pada Juni, dengan alasan banyaknya pengungkapan yang sedang ditangani perusahaan.

Ini adalah perbedaan pendapat tentang luasnya paparan, bukan tentang apakah bug tersebut ada. Mitigasi dari GitHub adalah pembatasan pada tingkat host; temuan AIR adalah bahwa pemeriksaan harus dilakukan di dalam agen, karena pin diresolusikan di sisi klien.

Apa yang sudah mapan, dan apa yang belum

• Ditetapkan: mekanismenya. Tulisan AIR memberikan perintah git yang tepat, aturan resolusi ref-over-object, dua kondisi yang dibutuhkan trik branch, dan varian FETCH_HEAD terpisah untuk Gemini CLI. The Register, Help Net Security, Cybersecurity News, InfoWorld, dan The Next Web semuanya melaporkannya dengan cara yang sama.

• Ditetapkan: dua versi yang telah ditambal. Anthropic mengonfirmasi Claude Code 2.1.179 pada 17 Juni 2026 dan Codex 0.146.0 milik OpenAI terverifikasi telah diperbaiki pada 12 Agustus 2026, menurut lini masa pengungkapan AIR.

• Terkonfirmasi: dua produk tidak memiliki tambalan saat diungkapkan. Google tidak akan menambal Gemini CLI dan akan menghentikannya; Microsoft belum merilis perbaikan Copilot.

• Tidak dapat dipastikan:reproduksi independen. Setiap catatan yang diterbitkan bermuara pada pos blog AIR sendiri, dan catatan riset Cloud Security Alliance secara eksplisit tidak menjabarkan validasi teknis pihak ketiga atau reproduksi independen atas eksploit tersebut. Karena alasan itulah arsip menilai tingkat keyakinan catatan ini pada B.

• Tidak dapat dipastikan: berapa banyak instalasi yang benar-benar terekspos. "Jutaan" adalah karakterisasi AIR dalam judulnya, bukan angka yang terukur.

• Belum dipastikan: apakah memperbarui agen yang terdampak menghapus plugin yang sudah ditukar, atau hanya mencegah pertukaran berikutnya. Tidak ada sumber terbit yang menyelesaikannya.

• Tidak terbukti: penggunaan nyata apa pun di dunia nyata. Tidak ada sumber dalam catatan yang melaporkan eksploitasi, probing, atau infrastruktur penyerang, dan arsip mencatat kerugian nyata sebagai keliru. Itu adalah ketiadaan pelaporan, bukan bukti bahwa tidak terjadi apa-apa.

Satu pemeriksaan pihak ketiga memang mempersempit gambaran praktisnya. The Next Web, yang merangkum pemeriksaan dari The Hacker News, melaporkan bahwa plugin di katalog komunitas Anthropic dan di katalog default Claude Code serta Copilot mengarah ke repositori GitHub, dan bahwa pembaruan otomatis aktif secara default terutama untuk marketplace bawaan tersebut. Karena GitHub menolak nama branch yang berbentuk SHA, varian nama branch lebih sulit dijangkau oleh pengguna yang tetap memakai katalog default. Penalaran itu tidak mencakup varian FETCH_HEAD milik Gemini CLI, yang tidak bergantung pada cara host memberi nama branch.

Seperti apa bentuk sebuah perbaikan

Abstract technical illustration on a dark navy field: a white hexagonal badge floats at the top centre, and from it a single white line descends through three translucent horizontal planes, passing through the middle of each. At the lowest plane the line passes a small hollow white ring, then splits — one branch continues straight down to a filled white dot on the plane, the other turns amber and runs off to the left, ending at a small dark unlit block that sits outside the stack. A faint pale outline of that block is drawn on the plane where it should have sat. No text, people or organisation logos appear. The OrcaRouter logo is composited in the bottom-right corner.

Perbaikan yang direkomendasikan AIR adalah satu asersi: setelah checkout, resolusikan commit yang benar-benar ada di working tree dan hentikan prosesnya kecuali commit itu sama dengan SHA yang dipatok. Para peneliti menekankan bahwa pemeriksaannya harus terhadap HEAD yang telah diresolusikan, bukan ref yang diminta, karena perbedaan itulah yang persis lolos pada varian Gemini CLI, dan pemeriksaan itu harus berjalan di dalam agen, karena pin diresolusikan di klien dan tidak ada marketplace yang dapat menegakkan jaminan yang diiklankannya.

Saran praktis bagi tim yang menjalankan agen-agen ini, yang diambil dari AIR, Cybersecurity News, dan komentar analis di InfoWorld:

• Perbarui Claude Code ke versi 2.1.179 atau lebih baru dan Codex ke versi 0.146.0 atau lebih baru. Memperbarui adalah satu-satunya mitigasi lengkap jika tersedia patch.

• Nonaktifkan pembaruan plugin otomatis pada agen mana pun yang tidak memiliki patch. Itu mengurangi kerentanan dari zero-click menjadi reinstalasi manual, yang merupakan pengurangan paparan, bukan perbaikan.

• Pindah dari Gemini CLI daripada menunggu patch yang menurut Google tidak akan datang.

• Audit inventaris plugin dan batasi sumber marketplace jika memungkinkan. AIR mencatat bahwa marketplace dapat mengurangi dampak varian nama cabang dengan hanya mengizinkan host yang menolak nama berbentuk SHA, secara efektif hanya GitHub, tetapi hal itu melarang host yang didukung resmi oleh agen dan tidak berpengaruh apa pun pada varian Gemini.

• Anggap workstation sebagai batas eksposur. Plugin mewarisi izin agen, sehingga eksploit yang berhasil dapat menjangkau kode sumber, kunci SSH, kredensial cloud, token CI/CD, dan repositori internal dengan otoritas pengembang itu sendiri. Pareekh Jain, analis utama di Pareekh Consulting, mengatakan kepada InfoWorld bahwa tim keamanan harus memeriksa log EDR, git, CI/CD, cloud IAM, dan autentikasi untuk proses tidak biasa, file plugin tak terduga, repositori yang berubah, dan aktivitas git yang mencurigakan — dan menambahkan bahwa langkah-langkah ini mengurangi risiko tanpa memperbaiki cacat mendasar, yang ia atribusikan ke kode vendor. "Perusahaan dapat menerapkan kontrol seputar penggunaan plugin," katanya kepada InfoWorld, "tetapi mereka tidak dapat memperbaiki cacat dalam cara agen coding memvalidasi kode yang di-checkout."

Mengapa bug pinning adalah yang paling berdampak

SHA pinning adalah jawaban industri terhadap persis jenis pengambilalihan yang telah ditunjukkan AIR: jika repositori publik dikompromikan, agen tetap menjalankan hash yang telah diaudit alih-alih menarik apa pun yang didorong penyerang. Plugin4Shell tidak mematahkan hash tersebut. Ini menunjukkan bahwa agen-agen itu me-resolve pin ke nama branch yang sekadar tampak seperti hash, dan tidak pernah membandingkan hasilnya. Segala hal di hilir asumsi itu — proses tinjauan, allowlist internal, keyakinan pengembang terhadap versi yang di-pin — mewarisi kegagalan tersebut.

Yang tidak didukung oleh catatan adalah klaim bahwa ada yang diambil. Ini adalah kerentanan yang ditemukan dan, dalam dua dari empat kasus, diperbaiki; tidak ada sumber di dalamnya yang melaporkan intrusi, dan produk yang tidak merilis patch masih menunggu. Pertanyaan terbuka adalah yang paling tidak memuaskan: bagi siapa pun yang menjalankan plugin pada agen yang belum ditambal, tidak ada cara yang dipublikasikan untuk mengetahui apakah kode yang berjalan adalah kode yang mereka setujui.