- Ditemukan kerentanan eksekusi kode jarak jauh yang kritis di versi lama OpenCode yang memungkinkan eksekusi kode arbitrer tanpa autentikasi
- Versi sebelum v1.1.10 secara otomatis menjalankan server HTTP, dan server ini mengizinkan eksekusi perintah arbitrer, pembacaan file, serta pembuatan sesi terminal tanpa prosedur autentikasi
- Sebelum v1.0.216, hanya dengan mengunjungi situs web saja, kode dapat dijalankan di lingkungan lokal pengguna
- Pada versi terbaru (v1.1.10), server dinonaktifkan secara default, tetapi jika diaktifkan tetap tidak memiliki autentikasi
- Kerentanan ini telah didaftarkan sebagai CVE-2026-22812, dan pengembang serta pengguna perlu segera memperbarui versi dan memeriksa konfigurasi
Ringkasan kerentanan
- OpenCode adalah asisten coding AI open source, dan sebelum v1.1.10 saat dijalankan akan otomatis memulai server HTTP (port default 4096+)
- Server menyediakan endpoint seperti
POST /session/:id/shell, POST /pty, GET /file/content
- Karena tidak ada prosedur autentikasi, semua klien yang dapat terhubung bisa mengeksekusi kode dengan hak pengguna
- Saat server berjalan, tidak ada indikator visual untuk pengguna, sehingga sulit mengetahui apakah server terekspos
- Kebijakan CORS di-hardcode ke
*.opencode.ai, sehingga halaman yang disajikan dari opencode.ai atau subdomainnya dapat mengakses API server
- Jika domain tersebut dikompromikan atau memiliki kerentanan XSS, semua pengguna dengan server aktif dapat menjadi target serangan
Vektor serangan
- Sebelum v1.0.216: situs web arbitrer dapat mengeksekusi kode di mesin lokal pengguna yang sedang menjalankan OpenCode
- Sebelum v1.1.10: proses lokal atau halaman localhost dapat mengeksekusi kode tanpa autentikasi
- Di semua versi saat server diaktifkan:
- Proses lokal dan halaman localhost dapat mengeksekusi kode tanpa autentikasi
- Saat menggunakan flag
--mdns, semua perangkat di jaringan lokal dapat mengaksesnya
- Tidak ada indikator bahwa server sedang berjalan, sehingga pengguna tidak menyadari status eksposurnya
- Kode dapat dieksekusi dari domain opencode.ai atau subdomainnya
Contoh serangan (Proof of Concept)
- Serangan lokal: saat server berjalan, proses lokal dapat membuat sesi dengan perintah
curl lalu menjalankan perintah id > /tmp/pwned.txt
- Serangan berbasis browser (sebelum v1.0.216): halaman web dapat mengirim perintah ke server lokal melalui permintaan
fetch, lalu mengunduh dan menjalankan skrip jarak jauh
- Dikonfirmasi berjalan di Firefox, sedangkan Chrome dapat menampilkan dialog konfirmasi pengguna karena perlindungan akses jaringan lokal
Langkah mitigasi untuk pengguna
- Periksa versi dengan
opencode --version lalu perbarui ke v1.1.10 atau lebih baru
- Periksa apakah entri
server.port atau server.hostname di file konfigurasi sedang diaktifkan
- Jangan gunakan flag
--mdns (karena akan bind ke 0.0.0.0 dan mengekspos ke seluruh jaringan)
- Jika server memang harus digunakan, hindari mengakses opencode.ai dan subdomainnya
- Pahami bahwa saat server diaktifkan, proses lokal dapat mengakses tanpa autentikasi
Linimasa pengungkapan
- 2025-11-17: laporan awal dikirim via email, tidak ada respons
- 2025-12-27: GitHub Security Advisory diajukan, tidak ada respons
- 2025-12-29: pengguna lain memublikasikan laporan
- 2025-12-30: pembatasan CORS diterapkan di v1.0.216
- 2026-01-09: server dinonaktifkan secara default di v1.1.10
- 2026-01-11: pengungkapan penuh
Tindakan yang direkomendasikan
- Batasi CORS ke domain minimum yang diperlukan (diterapkan di v1.0.216)
- Nonaktifkan server secara default (diterapkan di v1.1.10)
- Tambahkan prosedur autentikasi ke semua permintaan server
- Berikan indikator yang jelas kepada pengguna saat server berjalan
- Jelaskan di dokumentasi bahwa opsi
--mdns melakukan bind ke 0.0.0.0
- Terapkan TLS untuk komunikasi jaringan
- Publikasikan GitHub Security Advisory dan CVE-2026-22812 resmi
- Perkuat pemantauan terhadap email laporan keamanan dan notifikasi GHSA
- Perjelas hubungan kepercayaan antara maintainer OpenCode, opencode.ai, dan pengguna
Referensi
- CVE: CVE-2026-22812
- Paket yang terdampak: npm
opencode-ai
- Informasi terbaru dan kontak: cy.md
1 komentar
Komentar Hacker News
Sebagai maintainer, ia mengakui tidak menangani respons terhadap laporan keamanan ini dengan baik
Seiring penggunaan yang meningkat tajam, isu membeludak, dan minggu ini ia berencana bertemu para ahli untuk mendorong program bug bounty dan audit keamanan
Yang lebih penting adalah semua anggota tim memahami dan menerapkan panduan OWASP Insecure Design
Karena OpenCode adalah agen coding open source yang terkenal, ada kemungkinan ini sudah dieksploitasi
Mereka merasa model seharusnya dijalankan dalam lingkungan sandbox seperti gVisor, meski baru sekarang
Jika tidak ditangani cepat, bisa muncul lebih banyak penyerang yang memburu kerentanan RCE
Ada yang penasaran apakah mereka juga merujuk pada hal seperti prinsip operasi organisasi bergaya anarkisme
Banyak orang menjalankan alat seperti OpenCode di lingkungan lokal tanpa pemisahan hak akses
Plugin juga pada dasarnya dirancang dengan asumsi akses tak terbatas, dan penggunaan sumber dayanya besar
Setidaknya sebaiknya dijalankan di dalam dev-container atau VM, lalu hanya file yang diperlukan yang dihubungkan lewat SSHFS atau Samba
Kalau malas, pakai VPS seharga 5 dolar per bulan juga bisa
Saat menjalankan server dengan qemu, quickemu direkomendasikan
Fitur SSH remote milik zed juga berguna, sehingga Claude Code atau OpenCode bisa dipakai bersama
Meski penyalahgunaan dari situs web eksternal dicegah lewat perbaikan CORS, secara mendasar masalahnya adalah arsitekturnya memungkinkan eksekusi kode di localhost
Neovim secara default memakai socket domain, dan daemon SSH milik VS Code memiliki prosedur autentikasi
Server lokal yang mengeksekusi input klien tanpa autentikasi adalah kerentanan LCE (Local Code Execution),
dan bila bisa diakses melalui permintaan browser, itu meluas menjadi RCE (Remote Code Execution)
Mengejutkan bahwa endpoint HTTP dengan RCE tanpa autentikasi dimasukkan ke alat CLI, lalu bahkan ditambah bypass CORS
Jadwal pengungkapan kerentanan menjadi masalah
Ini dilaporkan pada 2025-11-17, tetapi meski sudah dihubungi beberapa kali, tidak ada respons
Lihat komentar issue GitHub
Walau server dimatikan secara default, saat dinyalakan tetap serius
Dari localhost, halaman web apa pun bisa mengeksekusi kode, dan proses lokal juga bisa dijalankan tanpa autentikasi
Tidak ada indikator yang memberi tahu pengguna apakah server sedang berjalan
Aplikasi TUI biasanya dipercaya justru karena tidak melakukan hal seperti ini, dan kejadian ini merusak kepercayaan itu secara serius
Mengejutkan bahwa OpenCode didukung oleh YC (Y Combinator)
Orang mengira YC akan mendorong budaya keamanan yang lebih baik
Untuk detail terkait, lihat komentar ini
Ada yang mengira OpenCode adalah proyek sukarela, tetapi ternyata proyek bergaya perusahaan yang didukung investor besar
Ada yang berhenti menggunakannya karena terus menambah fitur tetapi mengabaikan pemeliharaan inti
Tujuannya adalah memakai beberapa model sekaligus, tetapi berbagi konteksnya tidak efisien, sehingga kurang praktis
Sekarang mereka memakai Claude Code dan Codex secara berdampingan
Meski begitu, kebutuhan akan platform terbuka untuk mengintegrasikan banyak model tetap besar
ampcode bisa dipakai gratis untuk membuat skrip sederhana, dan Crush+GLM cukup baik mengikuti rencana dari Claude atau Codex
Awalnya ada yang menyukai Aider, tetapi karena hampir tidak dirawat, mereka sering mengalami masalah
Saat hendak memasang OpenCode, mereka jadi ragu setelah melihat kejadian ini
Mengejutkan bahwa asisten CLI LLM open source yang tidak terikat pada model tertentu ternyata masih sangat kurang