Perkakas Developer

Plugin4Shell bobol SHA pinning di empat agen coding AI sekaligus

Cacat desain yang sama memungkinkan penyerang mengganti kode plugin yang sudah dipin di empat agen coding AI utama tanpa aksi pengguna. Dua vendor masih belum punya perbaikan.

A padlocked metal chain with one link cracked open and glowing red, symbolizing a bypassed security pin.
A padlocked metal chain with one link cracked open and glowing red, symbolizing a bypassed security pin.

Mem-pin plugin ke commit SHA seharusnya jadi kata akhir

Anda mem-pin sebuah plugin ke hash commit 40 karakter, mereview commit itu sekali, lalu melanjutkan pekerjaan — pin itu dianggap permanen, kecuali Anda sendiri yang kembali dan mengubahnya. Itulah asumsi di balik SHA pinning pada agen coding AI, dan ternyata asumsi itu keliru di hampir semua implementasi utama. Riset dari Air Security mengungkap kerentanan bernama Plugin4Shell pada 17–18 September 2026: bug remote code execution zero-click yang memungkinkan penyerang mengganti kode plugin yang sudah dipin, sementara pin itu tetap terlihat utuh.

Kerentanan ini menyerang empat agen sekaligus — Claude Code milik Anthropic, Codex milik OpenAI, GitHub Copilot, dan Gemini CLI milik Google — dan itulah yang membuatnya jadi berita utama minggu ini, bukan sekadar CVE rutin di satu tool. Media keamanan mulai dari Help Net Security, The Register, hingga TheHackerNews memberitakan pengungkapan ini pada hari yang sama, dengan sudut pandang yang konsisten: ini kerentanan rantai pasok pertama yang benar-benar milik era agen AI, karena mengeksploitasi mekanisme yang justru ditambahkan agen untuk membuat plugin terasa aman.

Bagaimana pin itu sebenarnya jebol

Pada Claude Code, Codex, dan Copilot, akar masalahnya adalah proses checkout yang tidak pernah diverifikasi ulang oleh siapa pun. Agen memerintahkan git untuk checkout ke commit SHA 40 karakter tertentu, tapi tidak pernah memeriksa apakah working tree yang dihasilkan benar-benar cocok dengan hash tersebut. Penyerang yang menguasai (atau membobol) repository plugin bisa membuat branch dengan nama yang identik dengan string SHA target. Git akan meresolusi nama branch itu menggantikan commit asli, dan agen — yang hanya meminta "SHA itu" lalu menerima sesuatu — tidak punya cara membedakannya, menurut laporan Help Net Security.

Gemini CLI gagal dengan cara yang sedikit berbeda, tapi berujung di tempat yang sama. Ia mengambil commit yang dipin lalu menjalankan git checkout FETCH_HEAD, yang bisa saja meresolusi ke branch dengan nama itu, bukan commit itu sendiri, sehingga penyerang bisa mengganti kode dari branch default. Dua jalur implementasi berbeda, satu akar masalah yang sama: checkout yang berhasil dianggap sebagai bukti bahwa pin bertahan, padahal sama sekali bukan.

Akar masalah bersama itulah yang ingin ditekankan Air Security kepada para praktisi. Ini bukan review kode ceroboh dari satu tim saja — asumsi kepercayaan yang sama ternyata dibangun secara independen di setiap agen yang terdampak: checkout berhasil, maka pin dianggap bertahan. Empat organisasi engineering yang berbeda mengambil jalan pintas yang sama, dan tidak satu pun menambahkan satu baris verifikasi yang sebenarnya bisa menutup celah ini.

Kenapa "zero-click" adalah bagian yang menakutkan

Eksploitasi ini tidak butuh tautan phishing, tidak butuh flag berbahaya, tidak butuh dialog persetujuan. Karena Claude Code dan Codex sama-sama memperbarui plugin terinstal secara otomatis secara default, korban hanya perlu sudah memasang plugin dari marketplace yang benar-benar sudah direview dengan benar saat instalasi. Tugas penyerang hanyalah membobol state repository plugin itu belakangan, lalu menunggu sinkronisasi otomatis berikutnya — tanpa aksi terpisah dari pengguna, tanpa rekayasa sosial, tanpa apa pun yang perlu diklik.

Timeline ini penting. Air Security menemukan bug ini pada Mei 2026, membangun proof-of-concept eksploit yang berfungsi terhadap keempat agen, dan mengungkapkannya ke setiap vendor pada Juni 2026 lewat coordinated disclosure sebelum dipublikasikan pada September. Tiga bulan waktu persiapan adalah jendela coordinated-disclosure yang normal dan cukup longgar — dan dua dari empat vendor tetap belum merilis apa pun saat kerentanan ini dipublikasikan.

Posisi masing-masing vendor saat ini

Inilah detail yang mengubah Plugin4Shell dari sekadar "update lalu lanjut" menjadi keputusan nyata yang harus diambil praktisi hari ini:

Poin terakhir ini layak direnungkan. "Di-deprecate" bukan berarti "ditambal", dan menganggap keduanya setara justru adalah rasa aman palsu yang persis dibahas Plugin4Shell. Instalasi yang tetap memakai Gemini CLI karena migrasi merepotkan, sebenarnya sedang membawa RCE zero-click yang tidak ditambal, tanpa batas waktu.

Yang perlu dilakukan minggu ini

Jika Anda menjalankan Claude Code atau Codex dengan plugin pihak ketiga apa pun terpasang, cek versi Anda sekarang. Claude Code harus di versi 2.1.179 atau lebih baru, Codex di 0.146.0 atau lebih baru. Jika masih tertinggal, update sebelum Anda membiarkan auto-update berjalan diam-diam lagi — Anda ingin mengendalikan waktunya, bukan cuma hasilnya.

Jika Anda menjalankan GitHub Copilot dengan plugin dari marketplace mana pun selain yang sepenuhnya tertutup dan self-hosted, perlakukan setiap plugin terpasang sebagai belum terverifikasi sampai Microsoft merilis perbaikan. Belum ada versi untuk di-update, jadi satu-satunya mitigasi adalah mengurangi apa yang Anda percayai: lepas plugin yang tidak benar-benar dibutuhkan, dan hindari pengaturan auto-sync yang memungkinkan repository upstream yang dibobol mendorong kode baru ke lingkungan Anda tanpa pengawasan.

Jika Anda masih memakai Gemini CLI, jawaban jujurnya adalah tidak ada patch yang akan datang. Migrasi ke Antigravity jika alur kerja Anda memungkinkan, atau terima — secara eksplisit, sebagai keputusan yang didokumentasikan, bukan sekadar dibiarkan begitu saja — bahwa Anda menjalankan tool dengan RCE zero-click yang diketahui dan tidak akan ditambal oleh Google.

Dan jika Anda sedang membangun sistem plugin agen sendiri — tooling internal, marketplace kustom, apa pun yang mem-pin dependency ke sebuah commit — jangan berasumsi bahwa "kami mem-pin ke SHA" sudah cukup sebagai kontrol keamanan. Plugin4Shell terjadi karena checkout yang berhasil dianggap sebagai bukti bahwa pin bertahan. Tambahkan langkah eksplisit setelah checkout yang menghitung tree hash dan membandingkannya dengan tree hash asli dari commit yang dipin, lalu gagalkan proses (fail closed) jika keduanya tidak cocok. Satu pemeriksaan itu adalah pembeda antara pin yang benar-benar ditegakkan dan pin yang cuma teater — dan saat ini, empat nama terbesar di dunia agen coding AI ternyata mengirimkan versi teaternya.

Bacaan terkait

Komentar (0)

Belum ada komentar. Mulai percakapannya.

Tidak pernah ditampilkan atau dikirimi email — hanya disimpan sebagai hash.