
Clinejection: Bagaimana Judul Issue Mencapai Token npm Cline
- OrcaBARUOrcaCyber: GLM 5.3 Abliterated / Uncensored2026-11-04$3.00 / $5.00 per 1 juta token · 74 tok/s
- OrcaBARUOrcaCyber: Hy4 Abliterated / Uncensored2026-11-04$0.80 / $1.60 per 1 juta token · 113 tok/s
- OrcaBARUOrcaCyber: Kimi K3.1 Pro Abliterated / Uncensored2026-11-04$4.00 / $20.00 per 1 juta token · 43 tok/s
- orcaBARUOrca: OrcaC2 1.02026-10-303 tok/s
- OrcaBARUOrcaCyber: MiniMax M3.1 Flash Abliterated / Uncensored2026-10-29$0.80 / $1.60 per 1 juta token · 100 tok/s
- OrcaBARUOrcaCyber: GLM 5.3 Flash Abliterated / Uncensored2026-10-27$0.80 / $1.60 per 1 juta token · 101 tok/s
- OrcaBARUOrcaCyber: Qwen3.8 Flash Next Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1 juta token · 100 tok/s
- OrcaBARUOrcaCyber: MiMo V2.6 Flash Abliterated / Uncensored2026-10-26$0.80 / $1.60 per 1 juta token · 49 tok/s
- MoonshotBARUMoonshotAI: Kimi K3.1 Pro2026-10-2447Kecerdasan
- OrcaBARUOrcaCyber: DeepSeek V4.1 Flash Abliterated / Uncensored2026-10-23$0.80 / $1.60 per 1 juta token · 76 tok/s
- minimaxMiniMax: M3.1 Flash2026-10-1929Kecerdasan
- OrcaOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1 juta token · 111 tok/s
- deepseekDeepSeek: DeepSeek V4.1 Flash 10172026-10-1733Kecerdasan
- DeepSeekDeepSeek: DeepSeek V4.1 Flash2026-10-1740Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1 juta token · 57 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2955Kecerdasan
- anthropicAnthropic: Claude Sonnet 5.52026-09-2855Kecerdasan
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1 juta token · 163 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2228Kecerdasan
- OpenAIOpenAI: GPT-6 Sol2026-09-2244Kecerdasan
Pada 9 Februari 2026, peneliti keamanan Adnan Khan menerbitkan laporan tentang cacat yang telah ia laporkan secara privat kepada Cline pada 1 Januari: asisten pengodean AI sumber terbuka itu telah menghubungkan penyortir issue otomatis, yang dibangun di atas claude-code-action GitHub Action milik Anthropic, ke sebuah prompt yang menempelkan judul issue GitHub yang masuk langsung ke dalam instruksi model. Akun GitHub mana pun dapat memicunya dengan membuka issue, dan dalam reproduksi Khan, judul yang dirumuskan sebagai instruksi membuat agen menjalankan perintah shell di dalam alur kerja. Ia kemudian melacak jalur dari pijakan itu, melalui peracunan cache GitHub Actions, hingga ke kredensial rilis untuk VS Code Marketplace, OpenVSX, dan npm. Delapan hari setelah Cline memperbaiki alur kerja tersebut, token publikasi npm yang diyakini Cline telah dirotasi digunakan untuk menerbitkan cline 2.3.0, yang memasang OpenClaw di setiap mesin yang memasang paket tersebut. Entri lengkapnya, beserta tingkat keparahan dan keyakinannya, terdapat dalam Orca AI Incident Archive, di samping catatan rantai pasok di sekitarnya dari periode yang sama.
Dua tanggal, bukan satu
Arsip mencatat rekaman ini pada 9 Februari 2026, dengan presisi harian, dan itulah hari Khan menerbitkan tulisannya di adnanthekhan.com. Itu bukan hari paket berbahaya tersebut muncul. Kerentanan itu sendiri diperkenalkan pada 21 Desember 2025, dalam commit yang menambahkan alur kerja triase ke repositori cline/cline, dan tetap aktif hingga Cline menghapus alur kerja tersebut pada 9 Februari. Publikasi npm tanpa izin terjadi pada 17 Februari, delapan hari setelah perbaikan dan empat puluh tujuh hari setelah laporan privat pertama Khan.
Memisahkan kedua tanggal itu penting, karena fakta paling berkonsekuensi dalam kasus ini berada di celah di antara keduanya: pintu ditutup pada 9 Februari, tetapi kunci yang sudah disalin oleh penyusup masih berfungsi pada 17 Februari. Koreksi Cline sendiri, yang dikirim kepada Khan pada 17 Februari dan disertakan dalam unggahannya, menyatakannya secara langsung: "Saat kami merotasi kredensial pada 9 Feb, token npm publish tidak dicabut dengan benar. Token yang salah telah dihapus, dan token yang terekspos tetap aktif."
Rantainya: dari judul issue hingga token rilis
File yang rentan adalah .github/workflows/claude-issue-triage.yml, yang berjalan pada event issues dan memanggil anthropics/claude-code-action@v1 dengan Claude Opus 4.5, yang dipatok dalam workflow sebagai claude-opus-4-5-20251101. Khan mengutip konfigurasi workflow tersebut: allowed_non_write_users disetel ke wildcard "*", sehingga akun GitHub mana pun dapat memicu agen hanya dengan membuka issue, dan claude_args meneruskan --allowedTools dengan Bash, Read, Write, Edit, Glob, Grep, WebFetch, dan WebSearch. Bash-lah yang menjadi persoalan. Itu memberi model eksekusi shell di dalam workflow yang berjalan dalam konteks branch default.
Prompt tersebut menginterpolasi judul issue tanpa menyanitasinya. Proof of concept Khan menggunakan judul yang diawali dengan “Tool error.” dan dilanjutkan dengan instruksi untuk memasang paket helper dari commit tertentu sebelum melanjutkan triage. Referensi commit tersebut menunjuk ke sebuah fork yang package.json-nya memuat skrip preinstall, yang menjalankan perintah curl ke endpoint yang dikendalikan penyerang sebelum npm selesai memasang apa pun. Karena instalasi berjalan melalui Bash tool, model tidak pernah memeriksa apa yang dieksekusi. Khan mereproduksi ini pada mirror repositori Cline dan melaporkan bahwa agen mengeksekusi payload dalam setiap percobaan.
Eksekusi kode dalam alur kerja triase bukan, dengan sendirinya, akses ke kredensial rilis. Langkah itu berasal dari properti GitHub Actions yang telah didokumentasikan Khan dalam alat yang ia rilis pada 2024 bernama Cacheract: alur kerja apa pun dapat membaca dan menulis cache repositori dengan kontrol penuh atas kunci dan versi cache, bahkan alur kerja yang tidak pernah mendeklarasikan langkah caching. Pekerjaan triase berjalan pada branch default, sehingga berbagi cakupan cache dengan pekerjaan publikasi malam, yang memang memulihkan node_modules dari cache dan memang memegang token publikasi.
Entri cache bersifat tidak dapat diubah, sehingga penyerang tidak bisa begitu saja menimpa entri yang akan dipulihkan oleh job rilis. Cara Khan menghindari hal itu adalah dengan memanfaatkan perubahan kebijakan GitHub pada 20 November 2025, yang membuat layanan tersebut mengusir entri cache segera setelah cache sebuah repositori melewati 10 GB, dengan urutan least-recently-used. Banjiri cache hingga melewati 10 GB, dan entri yang sah akan tersingkir seiring waktu; klaim kunci yang dikosongkan dengan konten beracun, dan job berikutnya yang memulihkannya akan menjalankan kode penyerang. Cacheract mengotomatiskan seluruh rangkaian di dalam satu jalannya workflow, dan ia bertahan dengan menimpa action.yml milik actions/checkout sehingga langkah post dari action tersebut mengeksekusi payload di akhir setiap job.
Mata rantai terakhir adalah job malam yang berjalan sekitar pukul 02.00 UTC, memulihkan node_modules yang telah tercemar, lalu meledak. Yang keluar adalah VSCE_PAT, OVSX_PAT, dan NPM_RELEASE_TOKEN, yaitu kredensial untuk VS Code Marketplace, OpenVSX, dan npm masing-masing. Apakah setiap mata rantai berjalan terhadap repositori Cline sendiri dalam urutan itu adalah pertanyaan terpisah, yang dibahas di bawah.

Mengapa kredensial nightly merupakan kredensial produksi
Bantahan yang jelas adalah bahwa rilis nightly dan produksi seharusnya menyimpan secret yang berbeda. Jawaban Khan adalah bahwa pemisahan itu hanya nominal. OpenVSX dan VS Code Marketplace mengaitkan token publikasi dengan identitas penerbit, bukan dengan ekstensi individual, dan ekstensi Cline stable maupun nightly dipublikasikan di bawah identitas yang sama, yang diidentifikasi Khan di OpenVSX sebagai saoudrizwan. Di npm, model token fine-grained dikaitkan dengan sebuah paket, dan Cline memublikasikan build CLI stable dan nightly-nya ke paket cline yang sama. Token yang diterbitkan untuk job nightly karena itu bisa memublikasikan artefak produksi, yang persis terjadi delapan hari kemudian.
Kerangka Khan sendiri mengenai dampaknya bertumpu pada skala: ia mengutip pengumuman Cline bahwa ekstensi tersebut telah melewati 5 juta instalasi, dan mencatat bahwa pembaruan ekstensi yang didorong melalui kredensial curian akan dieksekusi dalam konteks setiap pengembang yang editornya memperbarui secara otomatis, dengan izin pengembang tersebut serta kunci, token, dan kode sumber apa pun yang ada di mesin itu.
Apa yang sebenarnya diterbitkan, dan apa yang dilakukannya
Artefak yang dipublikasikan adalah cline 2.3.0, dan ukurannya kecil. Stempel waktu dari registri npm sendiri menempatkan 2.3.0 pada 11:26:51 UTC tanggal 17 Februari 2026 dan 2.4.0 yang bersih pada 19:23:08 UTC pada hari yang sama, suatu masa keterpaparan yang menurut advisory Cline sekitar delapan jam, sampai 2.3.0 dideprekasi pada pukul 11:30 AM PT. package.json paket itu memuat satu baris tambahan, yaitu skrip postinstall yang berbunyi npm install -g openclaw@latest. Advisory Cline, GHSA-9ppg-jx86-fqw7, menyatakan bahwa tidak ada file paket lain yang diubah dan bahwa dist/cli.mjs identik byte demi byte dengan build 2.2.3 yang sah.
OpenClaw adalah kerangka kerja agen AI open-source yang nyata, bukan malware, dan advisory Cline menyatakan hal itu secara eksplisit: ini adalah proyek yang sah, tetapi instalasinya tidak diotorisasi atau tidak dimaksudkan. Endor Labs, yang menganalisis tarball tersebut, menilai dampak keseluruhan sebagai rendah dengan alasan bahwa instalasi tersebut tidak menjalankan daemon Gateway OpenClaw. Tulisan StepSecurity mengukur sisi lainnya: instalasi global meninggalkan kerangka kerja di disk dengan kredensial dan akses file apa pun yang dimiliki pengguna yang menginstal, dan desain OpenClaw, yaitu gateway lokal persisten dengan API operator, menjadikannya sesuatu yang bernilai tinggi untuk ditemukan di sana. Kedua penilaian tersebut tidak saling bertentangan. Yang satu menjelaskan apa yang berjalan selama jendela waktu tersebut; yang lain menjelaskan apa yang tertinggal setelahnya.
Volume adalah satu angka yang harus ditangani dengan hati-hati. StepSecurity melaporkan bahwa versi yang dikompromikan diunduh sekitar 4.000 kali sebelum dideprekasikan, dan The Register mengulangi angka tersebut. Endor Labs menetapkan jumlah unduhan bulanan cline untuk periode 19 Januari hingga 17 Februari sebesar 418.545, yang menggambarkan lalu lintas normal paket tersebut, bukan build berbahaya. Tidak ada angka yang menghitung mesin: jumlah unduhan bukanlah jumlah developer yang terdampak, dan tidak ada pihak yang menerbitkan angka basis instalasi untuk 2.3.0. Tim Threat Intelligence Microsoft mengatakan di X bahwa mereka mengamati "peningkatan kecil namun terlihat" dalam instalasi OpenClaw pada 17 Februari yang berasal dari skrip instalasi Cline, seperti dilaporkan The Hacker News.
Catatan advisory GitHub untuk GHSA-9ppg-jx86-fqw7 tidak menyertakan CVE dan tidak menyertakan CWE, dan tingkat keparahannya adalah Rendah. Peringkat itu berkaitan dengan payload yang jinak, bukan dengan pencurian kredensial, dan posisinya terasa janggal di samping peringkat kritis arsip untuk insiden itu sendiri. Advisory tersebut mencatat 2.3.0 sebagai versi yang terdampak dan 2.4.0 sebagai perbaikannya.
Pengungkapan yang tidak dijawab oleh Cline
Linimasa pra-publikasi Khan adalah bagian dari catatan yang paling sedikit membahas model dan paling banyak membahas proses. Ia mengirimkan GHSA melalui pelaporan kerentanan privat GitHub pada 1 Januari 2026 dan mengirim email ke kontak keamanan yang tercantum di halaman trust Cline pada hari yang sama. Ia mengirim tindak lanjut kepada seorang pengembang Cline pada 8 Januari. Ia mencoba mengirim pesan langsung ke CEO Cline di X pada 18 Januari. Ia menulis lagi pada 7 Februari dan tidak menerima apa pun selain nomor tiket otomatis. Ia menerbitkan pada 9 Februari.
Cline menggabungkan perbaikannya, pull request 9211, sekitar tiga puluh menit hingga satu jam kemudian. PR tersebut menghapus tiga file workflow, claude-issue-triage.yml, claude-pr-review.yml, dan cline-pr-review.yml, serta menghapus caching dari publish.yml, publish-nightly.yml, npm-nightly.yaml, dan npm-main.yaml, totalnya tujuh file, dengan langkah-langkah instalasi kini dijalankan tanpa syarat karena tidak ada lagi cache hit yang menjadi acuan.
Tanggapan publik Cline pada 10 Februari, yang dikutip dalam unggahan Khan, menerima temuan tersebut dan mencantumkan mitigasi segera: penghapusan alur kerja peninjauan bot untuk issue dan PR, penghapusan actions/cache dari alur kerja publikasi yang menangani kredensial rilis, dan rotasi kredensial terkait termasuk token bot, penyedia, dan publikasi. Cline juga mengakui penanganannya: "kami mengakui bahwa waktu respons kami terhadap laporan awal Anda tidak dapat diterima. Laporan yang dikirimkan pada 1 Januari seharusnya tidak memerlukan pengungkapan publik pada 9 Februari untuk ditangani."
Pada 11 Februari, Cline mengatakan bahwa pihaknya telah menyelesaikan rotasi penuh VSCE_PAT, OVSX_PAT, dan NPM_RELEASE_TOKEN, serta bahwa audit terhadap setiap rilis di ketiga kanal distribusi antara 21 Desember 2025 dan 9 Februari 2026 menemukan bahwa setiap versi Marketplace dan OpenVSX terpetakan ke rilis GitHub yang diberi tag dan bahwa seluruh 41 versi npm konsisten dengan sumbernya. Pihaknya menyimpulkan bahwa tidak ada rilis tidak sah yang telah diterbitkan "selama jendela paparan yang diklaim". Enam hari kemudian, Cline mengoreksi catatan tersebut, dalam pesan yang dikutip di atas: token npm belum dicabut, dan 2.3.0 telah diterbitkan dengan token itu.

Mapan, diatribusikan, belum terselesaikan
• Terbukti. Konfigurasi workflow bersifat publik dan telah dipublikasikan sebelum perbaikan. Khan mereproduksi prompt injection pada cermin repositori. Cline menggabungkan remediasi dan menerbitkan advisory yang mengonfirmasi publikasi 2.3.0, baris postinstall yang ditambahkan, biner CLI yang tidak berubah, jendela delapan jam, dan kegagalan token. Stempel waktu registri npm untuk 2.3.0 dan 2.4.0 cocok dengan waktu pada advisory. Arsip menilai catatan tersebut sebagai kritis, dengan keyakinan A, dengan kerugian nyata yang tercatat dan tanpa penanda sengketa.
• Diatribusikan, bukan dipastikan. Siapa yang menerbitkan 2.3.0 masih menjadi atribusi terbuka. Tulisan forensik yang diterbitkan oleh Michael Bargury dan alat investigasi otomatis bernama Raptor pada 19 Februari menyebut sebuah akun GitHub, glthub-actions, dan melaporkan dengan keyakinan tinggi bahwa akun ini mem-fork cline/cline, membuka issue 8904 pada 28 Januari 2026 pukul 03:51 UTC dengan judul yang disuntikkan, dan menggunakan commit fork untuk menjalankan payload dari sebuah gist. Khan mengonfirmasi bahwa akun gcbrun dan Dev11940518 adalah miliknya dan bahwa glthub-actions bukan. Akun tersebut sudah dihapus atau ditangguhkan saat tulisan itu diterbitkan, dan Cline tidak menyebut siapa pun. Anggap identitas tersebut sebagai temuan pihak ketiga.
• Diperdebatkan dalam hal karakter, bukan fakta. Bargury menilai episode ini konsisten dengan demonstrasi riset keamanan alih-alih kampanye berbahaya, dengan menyebut payload yang tidak berbahaya dan riwayat aktor terhadap repositori otomasi New Relic. Cline menyebutnya sebagai penerbitan tanpa izin, dan Khan menulis bahwa aktor yang menerbitkan 2.3.0 "diduga" adalah orang yang sama yang meracuni cache. Tidak ada yang menunjukkan adanya niat untuk menimbulkan kerugian, dan tidak ada yang menunjukkan bahwa niat itu tidak ada.
• Belum terselesaikan. Catatan pra-publikasi Khan sendiri berhati-hati terhadap satu poin yang terkadang disederhanakan oleh pelaporan belakangan: antara 31 Januari dan 3 Februari 2026, beberapa nightly run gagal dengan langkah Post Checkout yang tidak menghasilkan output, yang merupakan indikator kompromi Cacheract, dan alur kerja triage adalah jalur paling jelas tetapi tidak terbukti menjadi titik masuk bagi aktivitas tersebut. Tidak ada pihak mana pun yang menerbitkan bukti bahwa token Marketplace atau OpenVSX digunakan; satu-satunya artefak yang dihasilkan siapa pun adalah build npm.

Apa yang berubah setelahnya
Perbaikan dilakukan pada beberapa lapisan sekaligus, dan masing-masing layak disebutkan karena menjawab bagian yang berbeda dari kegagalan tersebut. Alur kerja yang dapat dijangkau pihak luar dihapus, bukan dipersempit. Cache dihapus dari empat alur kerja rilis yang menyimpan rahasia publikasi, bukan dari seluruh repositori, dan inilah perubahan yang menghentikan pivot. Kredensial dirotasi, dan setelah koreksi 17 Februari token npm yang benar dicabut. Advisori Cline menyatakan bahwa penerbitan npm kini menggunakan provenance OIDC melalui GitHub Actions, dan analisis metadata StepSecurity menunjukkan mengapa hal itu penting: rilis yang sah sudah membawa atestasi provenance, dan 2.3.0 adalah outlier yang diterbitkan oleh akun manusia. Celahnya adalah jalur token berumur panjang tetap terbuka bersama trusted publishing, yang merupakan hal spesifik yang menurut Endor Labs harus ditutup oleh para maintainer. Cline menerbitkan GHSA-9ppg-jx86-fqw7, menandai 2.3.0 sebagai deprecated dengan pesan bahwa versi itu tidak boleh dipasang, dan mengarahkan pengguna ke 2.4.0 atau versi yang lebih baru.
Rekomendasi struktural Khan melangkah lebih jauh daripada apa yang telah diimplementasikan, dan layak dicatat sebagai miliknya, bukan milik Cline: hapus Bash, Write, dan Edit dari alur kerja triase mana pun dan sisakan hanya pembacaan berkas serta panggilan GitHub CLI spesifik yang dibutuhkannya; jangan pernah memulihkan cache dalam pekerjaan yang memegang rahasia publikasi produksi; dan berikan rilis nightly namespace registri tersendiri serta identitas penerbitan khusus non-produksi, sehingga token nightly yang dicuri sama sekali tidak dapat menerbitkan rilis stabil.
Jeda delapan hari antara perbaikan dan penerbitan berbahaya adalah detail yang membuat catatan ini layak disimpan. Setiap langkah dalam rantai itu adalah teknik yang sudah dikenal; Khan telah menerbitkan alat peracunan cache, dan riset PromptPwnd dari Aikido Security pada Desember 2025 mendokumentasikan pola salah konfigurasi triase yang sama. Yang menyusunnya menjadi insiden rantai pasok adalah alur kerja yang membiarkan teks dari orang asing mencapai shell, cache yang dibagikan dengan job yang memegang kunci rilis, dan rotasi token yang melewatkan satu kredensial. Masing-masing dari ketiga perbaikan itu akan memutus rantai jika diterapkan sendiri; perbaikan ketiga datang terlambat delapan hari.
