Satu Issue GitHub Tanpa Akses Apa Pun Bisa Bajak Runner CI Claude Code dan Gemini CLI

Akun GitHub tanpa hak akses apa pun ke sebuah repositori — cuma bisa membuka issue seperti siapa saja — ternyata cukup untuk menjalankan kode di runner CI yang sama dipakai Anthropic dan Google membangun agen coding mereka sendiri. Bukan lewat kredensial curian atau plugin pihak ketiga yang lemah, tapi lewat jalur yang paling biasa di GitHub: kolom deskripsi issue. Temuan ini dipresentasikan di Black Hat USA 2026 pada 5 Agustus, dan menyasar dua agen coding berbasis AI yang paling banyak dipasang di pipeline CI/CD saat ini — Claude Code milik Anthropic dan Gemini CLI milik Google (The Hacker News).

Claude Code: tiga ronde tambal-bypass sampai kredensial bocor lewat penghitung unduhan

Pola serangannya dimulai dari prompt injection klasik: penyerang menaruh instruksi tersembunyi di dalam isi sebuah GitHub issue, lalu memancing agen Claude Code — yang di banyak setup CI otomatis membaca dan menindaklanjuti issue baru — untuk menjalankan perintah git yang tampak wajar. Masalahnya ada pada satu flag spesifik: git push --receive-pack=. Validator Claude Code memeriksa 23 aturan keamanan sebelum mengizinkan perintah dieksekusi, tapi lebih dulu men-strip teks yang diapit tanda kutip tunggal — perilaku yang sebetulnya benar untuk mencegah injeksi shell biasa. Celahnya: nilai di dalam flag --receive-pack bukan dibaca oleh shell, melainkan dieksekusi langsung oleh git sendiri, sehingga payload yang disusun di situ lolos tanpa tersentuh satu pun dari 23 pemeriksaan itu dan berjalan di runner GitHub Actions.

Yang membuat kasus ini lebih menonjol dari bug prompt-injection biasa adalah butuh tiga ronde temuan-tambal-bypass sebelum benar-benar tertutup. Pada ronde ketiga, peneliti menemukan penyerang bisa memakai penghitung unduhan publik di Hugging Face sebagai kanal eksfiltrasi tersembunyi — membocorkan API key satu karakter demi satu karakter lewat naik-turunnya angka unduhan yang terlihat publik, tanpa perlu koneksi jaringan keluar langsung dari runner. Celah gabungan ini terdaftar sebagai CVE-2026-54316, memengaruhi setiap rilis Claude Code dari versi 0.2.54 sampai 2.1.163, dan baru benar-benar tertutup di versi 2.1.163 (eSecurity Planet).

Gemini CLI: skor CVSS sempurna dari file konfigurasi yang terlalu dipercaya

Celah di Gemini CLI berdiri sendiri, tapi mengarah ke akibat yang setara parahnya. Google mendesain Gemini CLI agar otomatis memuat file .gemini/.env dari folder kerja lokal — kenyamanan yang masuk akal untuk developer yang menjalankannya di laptop sendiri. Masalahnya, "kepercayaan otomatis" itu tetap berlaku ketika CLI dijalankan di mode headless, misalnya di dalam workflow GitHub Actions yang memproses pull request dari kontributor luar. Penyerang tinggal menyisipkan file .gemini/.env berbahaya ke dalam repositori atau PR, dan isinya akan dibaca sebagai konfigurasi sah oleh container launcher — cukup untuk menjalankan perintah sistem operasi di host, bahkan sebelum lapisan sandbox yang seharusnya mengisolasi kode tak tepercaya sempat aktif.

Celah ini terdaftar sebagai CVE-2026-12537 dengan skor CVSS 10.0 — nilai maksimum, menandakan dampak penuh tanpa butuh privilese apa pun dari penyerang — dan ditemukan secara independen oleh dua peneliti berbeda, Elad Meged dari Novee Security dan Dan Lisichkin dari Pillar Security, yang sama-sama melaporkannya lewat program bug bounty resmi Google (SecurityWeek). Perbaikannya sudah dirilis di Gemini CLI 0.39.1 dan GitHub Action run-gemini-cli 0.1.22 (GitHub Security Advisory GHSA-jj69-4grx-fqj5).

Lines of HTML code di layar
Lines of HTML code di layar

Bukan bug satu baris kode, tapi cacat desain berulang

Dua celah ini datang dari vendor berbeda dan mekanisme teknis yang berbeda pula, tapi polanya sama: satu bagian sistem menandai sebuah nilai sebagai "sudah divalidasi", lalu bagian lain bertindak atas nilai itu dengan wewenang yang lebih besar dari yang dikira si pemvalidasi. Di Claude Code, validator mengira dirinya sudah memeriksa semua yang perlu diperiksa, padahal git membaca flag itu dengan aturan yang berbeda dari asumsi shell. Di Gemini CLI, "percaya folder kerja lokal" masuk akal di laptop developer tapi jadi lubang terbuka begitu folder kerja itu diisi konten dari pull request orang asing.

Pola ini bukan kebetulan. Baik Claude Code maupun Gemini CLI dirancang untuk beroperasi dengan otonomi tinggi — membaca isu, menjalankan perintah, mengakses kredensial CI — persis fitur yang membuatnya berguna di pipeline otomatis. Tapi otonomi yang sama itulah yang mengubah setiap sumber input tak tepercaya, termasuk kolom teks bebas seperti isi GitHub issue, menjadi permukaan serangan langsung ke infrastruktur produksi.

Rak server berwarna abu-abu grayscale
Rak server berwarna abu-abu grayscale

Takeaway

Kedua celah sudah ditambal — perbarui ke Claude Code 2.1.163 dan Gemini CLI 0.39.1 (plus run-gemini-cli 0.1.22) bila belum. Tapi akar masalahnya lebih luas dari dua CVE ini: begitu agen coding AI diberi izin membaca konten publik (issue, PR, komentar) sekaligus wewenang eksekusi di lingkungan CI yang menyimpan kredensial, batas antara "input pengguna" dan "perintah tepercaya" jadi kabur secara struktural. Tim yang menjalankan agen coding di CI/CD sebaiknya memperlakukan setiap issue dan PR dari kontributor luar sebagai input tak tepercaya secara default — bukan cuma menunggu vendor menutup celah berikutnya.

---

Sumber gambar: Markus Spiske di Unsplash, Florian Olivo di Unsplash, imgix di Unsplash

The conversation 0

No comments yet. Start the conversation.

Comments are reviewed before appearing. Links are masked.