
Proses Masuk MCP OpenCode Menyerahkan URL Server ke PowerShell — dan Tidak Ada CVE untuk Menandainya
- MoonshotBARUMoonshotAI: Kimi K3.1 Pro2026-10-2455Kecerdasan
- OrcaBARUOrcaCyber: DeepSeek V4.1 Flash Abliterated2026-10-23$0.70 / $1.60 per 1 juta token · 199 tok/s
- OrcaBARUOrca: OrcaCyber Ultra 1.02026-10-17$5.00 / $10.00 per 1 juta token · 14 tok/s
- deepseekBARUDeepSeek: DeepSeek V4.1 Flash 10172026-10-1745Kecerdasan
- DeepSeekBARUDeepSeek: DeepSeek V4.1 Flash2026-10-1740Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.52026-10-10$3.00 / $7.50 per 1 juta token · 150 tok/s
- openaiOpenAI: GPT-6.1 Sol2026-09-2952Kecerdasan
- anthropicAnthropic: Claude Sonnet 5.52026-09-2856Kecerdasan
- typesafeTypeSafe: Jev 1.132026-09-24$0.04 / $0.00 per 1 juta token · 1062 tok/s
- OpenAIOpenAI: GPT-6 Luna2026-09-2238Kecerdasan
- OpenAIOpenAI: GPT-6 Sol2026-09-2248Kecerdasan
- AnthropicAnthropic: Claude Opus 5.52026-09-2258Kecerdasan
- xAIGrok 4.72026-09-2146Kecerdasan
- OrcaOrca: OrcaCyber Zero 1.02026-09-17$3.00 / $7.50 per 1 juta token · 159 tok/s
- OrcaOrca: OrcaVerify Text 1.02026-09-16$2.00 / $0.00 per 1 juta token · 1906 tok/s
- OpenAIOpenAI: GPT-6 Astra2026-09-0453Kecerdasan77Koding
- GoogleGoogle: Gemini 3.8 Flash2026-09-0241Kecerdasan76Koding
- AlibabaQwen: Qwen3.8 Max (0902)2026-09-0245Kecerdasan76Koding
- AnthropicAnthropic: Claude Fable 5.12026-09-0153Kecerdasan82Koding
- TencentTencent: Hy4 preview2026-08-28$0.83 / $2.50 per 1 juta token · 48 tok/s
Pada 19 Oktober 2026 Pillar Security mengungkapkan cacat eksekusi kode jarak jauh di OpenCode, agen pengodean sumber terbuka yang dikelola oleh Anomaly: server Model Context Protocol jarak jauh yang telah dikonfigurasi pengembang dapat menjalankan kode arbitrer di mesin pengembang tersebut selama proses masuk OAuth MCP, tanpa prompt persetujuan di antaranya. Bug tersebut terbatas pada Windows dan Windows Subsystem for Linux, tempat OpenCode meneruskan URL login yang disediakan server ke perintah PowerShell tanpa melakukan escape. Pillar menetapkan rentang terdampak pada 1.0.137 hingga 1.18.32. Anomaly memperbaikinya di 1.18.33, menerbitkannya ke npm pada 28 September 2026, dan tidak meminta CVE serta tidak menerbitkan advisory — sehingga tidak ada apa pun dalam feed kerentanan normal yang akan memberi tahu tim terdampak untuk melakukan upgrade. Pillar melaporkan tidak ada bukti bahwa cacat tersebut pernah digunakan dalam serangan. Ini adalah satu catatan dalam arsip insiden AI, di mana setiap entri mencantumkan sumbernya sendiri, tingkat keparahan, tingkat keyakinan, dan tanda status diperdebatkan.
Apa sebenarnya kekurangannya
Ketika klien MCP terhubung ke server jarak jauh yang memerlukan otorisasi, klien tersebut menjalankan handshake penemuan OAuth. Server merespons dengan 401 dan tantangan yang menunjuk ke dokumen penemuannya, dan satu bidang dalam dokumen tersebut — authorization_endpoint — memberi tahu klien ke mana harus mengirim pengguna untuk masuk. Bidang ini adalah string bebas, dan pihak yang diautentikasi adalah pihak yang memilihnya.
Di OpenCode 1.18.32, string itu berpindah dari wire ke sebuah shell. Pillar melacak jalurnya dari dokumen discovery server melalui MCP SDK ke oauth-provider.ts, mcp/index.ts dan browser.ts, berakhir di open, paket kecil yang dipakai OpenCode untuk meluncurkan browser. Tidak ada apa pun di jalur itu yang memeriksa skema URL, dan tidak ada yang membandingkannya dengan origin server yang telah dikonfigurasi oleh pengembang. Handshake-nya memang otomatis secara desain — intinya adalah mengirim Anda ke halaman login tanpa membuat Anda menyalin URL — sehingga tidak ada langkah persetujuan yang berdiri di antara jawaban server dan peluncur.
The launcher is where it broke. On macOS and Linux, open passes the address as an argument vector and no shell is involved. On Windows, version 10.1.2 of open — the version every affected OpenCode release pinned — builds a PowerShell command, base64-encodes it and runs it with powershell -EncodedCommand. Pillar quotes the source: the application name is escaped on one line, and the target URL is not. PowerShell evaluates $(...) subexpressions inside double-quoted strings, so an address of the form https://evil.test/$([IO.File]::WriteAllText('C:\Users\Public\pwned.txt','RCE')) runs before the browser launch fails. OpenCode discards that failure.
Dua sifat membuatnya mudah terlewat. Payload tidak mengandung spasi, sehingga normalisasi URL membiarkannya utuh, dan secara sintaksis itu adalah alamat https yang biasa. Dan server tidak perlu bersikap bermusuhan saat dikonfigurasi: Pillar mencatat bahwa kompromi di kemudian hari, entri registri yang dibajak, typosquat, atau domain kedaluwarsa masing-masing akan mengubah entri konfigurasi tepercaya menjadi mekanisme pengiriman.
Siapa yang terpapar
Populasi yang terpapar adalah pengguna Windows dan WSL yang menjalankan OpenCode dengan server MCP jarak jauh yang dikonfigurasi. Pillar menggambarkan OpenCode memiliki sekitar 3 juta unduhan npm mingguan dan 211.000 bintang GitHub; laporan Infosecurity Magazine menempatkan jumlah bintang di lebih dari 218.000. Tidak satu pun dari angka tersebut merupakan jumlah instalasi yang terdampak, dan belum ada yang menerbitkannya.
Pemicunya adalah satu titik di mana kedua laporan utama berbeda, dan hal itu penting bagi risiko maupun tingkat keparahan. Pillar menggambarkan eksploitasi sebagai tidak memerlukan interaksi atau persetujuan tambahan dari pengguna. The Hacker News, dalam laporannya tanggal 22 Oktober, menyatakan bahwa langkah browser hanya berjalan ketika developer memulai proses masuk — dengan menjalankan opencode mcp auth atau membuat permintaan yang sesuai — dan bahwa sekadar memiliki server yang dikonfigurasi, atau membuka sesi, tidak akan mencapainya. Bagaimanapun juga, developer tidak melakukan hal yang tidak biasa; memulai autentikasi terhadap server yang sudah ada dalam konfigurasi adalah hal rutin. Namun "tanpa interaksi" dan "satu interaksi rutin" adalah klaim yang berbeda, dan perbedaannya langsung memengaruhi skor.
Perbaikan itu hadir dengan sebutan refactor
Pillar melaporkan celah tersebut secara privat melalui GitHub Security Advisory pada 29 Agustus 2026, dengan materi reproduksi lengkap. Pada 25 September Pillar menindaklanjuti di luar thread advisory; Anomaly mengonfirmasi bahwa laporan tersebut telah sampai ke timnya dan membalas bahwa server MCP berbahaya berada di luar model ancaman mereka. Pada hari yang sama, pull request #51414 — yang digabungkan sebagai commit 29f07e0c — masuk. Hal ini dideskripsikan sebagai penggabungan delapan lokasi pemanggilan peluncuran browser menjadi satu helper. Versi 1.18.33 mencapai npm tiga hari kemudian, pada 28 September.
Patch ini memiliki tiga lapisan. Dependensi open dipindahkan ke 11.0.4, yang membungkus target dengan tanda kutip tunggal, dan PowerShell tidak melakukan ekspansi apa pun di dalam tanda kutip tunggal. Sebuah openUrl() helper baru menolak skema non-HTTP(S). Pemeriksaan skema dimasukkan ke redirectToAuthorization itu sendiri, pada batas yang telah disebut Pillar dalam laporannya. Baik pull request maupun catatan rilis tidak menyebutkan cacat keamanan, dan Anomaly tidak meminta CVE.
The Hacker News melaporkan bahwa kebijakan keamanan yang diterbitkan Anomaly menyatakan bahwa server MCP yang dikonfigurasi pengguna berada "di luar batas kepercayaan kami," dan bahwa perusahaan telah menerbitkan imbauan untuk cacat eksekusi kode OpenCode lainnya tahun ini, termasuk satu yang diperbaiki pada Agustus. Keterangan Pillar tentang balasan yang diterimanya lebih blak-blakan: "kami telah memperbarui dependensi, tetapi secara umum, mencoba menangani server MCP berbahaya berada di luar model ancaman kami."

Jika dibaca sebagai suatu urutan, linimasa menempatkan bug OpenCode di ujung sebuah jejak lima tahun, bukan di awal sebuah jejak. Cacat yang menghasilkannya sudah dipublikasikan, dan perbaikannya sudah dirilis, sebelum baris kode yang menggunakannya ditulis.
Mengapa validasi skema tidak akan menghentikannya
Obat yang disepakati untuk kelas bug ini adalah validasi skema URL: blokir skema-skema aneh, izinkan http dan https, selesai. Itulah yang dikirimkan MCP TypeScript SDK, dan itulah yang ditambahkan OpenCode di 1.18.33. Payload Pillar lolos dari setiap pemeriksaan tersebut, karena menggunakan https. Denylist SDK memblokir javascript:, data: dan vbscript:; allowlist http/https yang lebih ketat diusulkan dalam pull request SDK #841 pada Agustus 2025 dan ditutup tanpa digabungkan, sementara pull request #877 merilis denylist tiga skema di v1.17.4 — dan Pillar mengatakan itu masih menjadi kebijakan di SDK 1.32.0 saat dipublikasikan. Yang sebenarnya menutup celah di OpenCode adalah pembaruan dependensi, bukan pemeriksaan yang terlihat seperti perbaikan keamanan.
Sejarahnya membantah anggapan bahwa ini hanyalah kelalaian satu proyek. Paket open telah mencantumkan peringatan di README sejak 2021 bahwa paket ini tidak memberikan jaminan keamanan dan bahwa sanitasi input adalah tanggung jawab pemanggil. Pada Oktober 2020, seorang pengguna mengajukan issue #202 yang melaporkan bahwa URL yang mengandung tanda dolar kehilangan sebagian dirinya di WSL 2 — ekspansi string tersebut, dilaporkan sebagai gangguan tautan rusak. Pada Oktober 2023, seorang engineer Adobe mengajukan issue #323, "injeksi perintah OS di Windows saat membuka URL," dengan proof of concept satu baris: open('https://$(calc.exe)'). Pemelihara mengutip README dan mengatakan bahwa pull request yang meningkatkan escaping dipersilakan; issue tersebut ditutup sebagai tidak direncanakan tiga hari sebelum open 11.0.0 tetap merilis escaping itu, pada 15 November 2025. OpenCode menulis panggilan peluncuran browser-nya pada 7 Desember 2025, tiga minggu setelah versi open yang telah diperbaiki ada, terhadap pin yang sudah berumur berbulan-bulan.
Dalam bulan-bulan sebelum panggilan itu ditulis, ekosistem MCP mencatat tiga CVE pada sink yang sama atau field yang sama: CVE-2025-6514 di mcp-remote (CVSS 9.6, diungkapkan oleh JFrog pada 9 Juli 2025), CVE-2025-58062 di openmcp-client, dan CVE-2025-10619 di sequa-mcp. Kontras yang diajukan Pillar adalah dengan klien yang sama sekali tidak pernah membangun perintah shell dari string jarak jauh: ia menyebut gemini-cli, Claude Code, github-mcp-server, dan mcp-gateway milik Docker sebagai klien yang meneruskan URL sebagai vektor argumen, sehingga pertanyaan tentang apa isi string tersebut tidak lagi menjadi penentu.

Apa yang sudah mapan, dan apa yang belum
Catatan tersebut dinilai dengan tingkat keyakinan A oleh arsip, dan pelaporan di baliknya tetap kuat. Infosecurity Magazine menerbitkan pada 20 Oktober wawancaranya sendiri dengan Eilon Cohen dari Pillar; The Hacker News menerbitkan laporannya sendiri pada 22 Oktober; DKCERT, CERT nasional Denmark, merangkum temuan tersebut pada 21 Oktober dengan mengutip Infosecurity; dan laboratorium riset Cloud Security Alliance menerbitkan analisis yang menambahkan satu catatan substantif di bawah ini. Tidak satu pun dari mereka adalah pihak pelapor, dan mereka sepakat tentang mekanisme, versi, dan perbaikan senyap. Anomaly sendiri tidak menerbitkan apa pun tentang cacat tersebut.
Ditetapkan, secara resmi:
• Cacat tersebut, mekanismenya, dan cakupan platformnya. Pillar mengidentifikasi baris sumber tertentu dan perbaikannya terlihat dalam diff publik 1.18.32-ke-1.18.33; dua laporan berita independen menggambarkan alur data yang sama.
• Rentang yang terdampak, 1.0.137 hingga 1.18.32, dan rilis perbaikan, 1.18.33, yang diterbitkan 28 September 2026.
• Bahwa tidak ada CVE dan tidak ada advisory. Ini dapat diperiksa, dan ini adalah fakta yang menopang bagi para defender.
• Bahwa tidak ada eksploitasi yang dilaporkan. Pillar mengatakan pihaknya tidak melihat tanda-tanda penggunaan dalam serangan, dan The Hacker News mencatat bahwa tidak ada indikator kompromi yang dipublikasikan. Tidak adanya indikator yang dipublikasikan bukanlah bukti ketiadaan, dan tanpa telemetri dari vendor, tidak ada tafsiran yang dapat dikonfirmasi.
Belum ditetapkan, atau dalam ketegangan:
• Angka 9.8. Itu adalah skor CVSS v3.1 yang diusulkan Pillar, bukan skor resmi: karena tidak ada CVE, tidak ada skor NVD dan tidak ada skor vendor. Catatan riset Cloud Security Alliance menunjukkan bahwa 9.8 mengasumsikan tidak adanya interaksi pengguna, dan bahwa jika laporan The Hacker News tentang pemicunya benar, peringkat yang memerlukan interaksi pengguna — sekitar 8.8 — akan lebih cocok. Tulisan ini tidak menyelesaikan hal itu; tag tingkat keparahan tinggi milik arsip itu sendiri adalah klasifikasi, bukan skor.
• Tanggal publikasi. Laporan Pillar bertanggal 19 Oktober 2026 di tajuknya, dan kedua artikel berita menggunakan tanggal tersebut; kronologi pengungkapan di bagian bawah laporan Pillar sendiri mencantumkan publikasi sebagai 4 Oktober. Arsip mencatat 19 Oktober dengan presisi hari.
• Ukuran populasi yang terpapar. Belum ada jumlah yang dipublikasikan. Angka unduhan dan bintang di atas adalah metrik repositori, bukan jumlah instalasi.
• Apakah ada mesin yang benar-benar telah dikompromikan. Tidak ada yang dipublikasikan yang mendukung hal itu, dan catatan tersebut tidak memuat kerugian nyata.

Apa yang berubah, dan apa yang harus dilakukan
Remediasinya adalah pemeriksaan versi, karena tidak ada hal lain yang akan memberi tahu Anda. OpenCode 1.18.33 atau lebih baru sudah diperbaiki. Instalasi yang terdampak harus ditemukan dengan menginventarisasi paket secara langsung: rekomendasi Pillar adalah menginventarisasi OpenCode itu sendiri daripada menunggu feed, dan catatan Cloud Security Alliance menyarankan untuk melakukan kueri terhadap opencode-aikarena tidak ada pengenal yang dapat dicocokkan oleh feed. Tim yang tidak dapat melakukan peningkatan dan menjalankan Windows atau Windows Subsystem for Linux harus menghapus server MCP jarak jauh yang belum mereka verifikasi dari konfigurasi OpenCode mereka; opencode mcp list menunjukkan server mana yang ada.
Bagi siapa pun yang memelihara klien MCP, panduan Pillar lebih sempit daripada saran biasa: teruskan URL sebagai vektor argumen dan jangan pernah membangun baris perintah dari string jarak jauh, ikat penemuan OAuth ke origin server yang dikonfigurasi pengguna, dan perlakukan dokumen penemuan, metadata server, dan deskriptor alat sebagai input yang tidak tepercaya, bukan sebagai pengaturan. Catatan Cloud Security Alliance menambahkan heuristik perburuan — sebuah proses OpenCode yang menjalankan powershell.exe dengan -EncodedCommand, misalnya — sekaligus menekankan bahwa ini adalah saran untuk rekayasa deteksi, bukan indikator kompromi yang dipublikasikan.
Bukan pembobolan Console
Pengungkapan Pillar muncul beberapa hari setelah Anomaly mengonfirmasi pelanggaran terpisah terhadap Console milik OpenCode yang dihosting, yang mungkin telah mengekspos kunci penyedia API yang tersimpan. Kedua peristiwa itu tidak saling terkait, dan Eilon Cohen dari Pillar menjelaskan secara gamblang perbedaannya dalam wawancaranya dengan Infosecurity Magazine. "Pelanggaran itu mengenai sistem lama di balik proksi kunci yang dihosting, dan mengekspos kunci penyedia yang telah disimpan pengguna di sana," katanya. "Kerentanan yang kami laporkan berjalan sebaliknya: server MCP jarak jauh yang berbahaya mengeksekusi kode di mesin pengembang sendiri selama handshake OAuth. Target dan posisi penyerang yang berbeda." Pelanggaran Console adalah catatan terpisah dalam arsip, dan keduanya harus dibaca sebagai entri terpisah.
Yang menghubungkan keduanya, dalam kerangka Cohen, adalah pertanyaan yang mendasari keduanya: "Siapa yang Anda izinkan untuk menyerahkan kredensial dan input kepada alat pengodean AI, dan apa yang dilakukan alat itu dengan semuanya."
Kesenjangan pengungkapan adalah bagian yang bertahan lebih lama daripada bug itu. Sebuah cacat yang menurut para penemunya kritis, diperbaiki di dalam pembaruan dependensi, dan tidak muncul pada setiap sinyal otomatis yang biasanya diandalkan oleh defender, membuat inventaris langsung sebagai satu-satunya metode deteksi — dan vendor tidak menerbitkan advisory yang memberi tahu siapa pun untuk menjalankannya.
