3 poin oleh GN⁺ 2026-01-13 | 1 komentar | Bagikan ke WhatsApp
  • 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

 
GN⁺ 2026-01-13
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

    • Daripada menghabiskan uang untuk bug bounty atau audit, lebih baik berinvestasi pada penataan ulang organisasi dan pelatihan karyawan
      Yang lebih penting adalah semua anggota tim memahami dan menerapkan panduan OWASP Insecure Design
    • Awalnya ada yang memandang ini secara positif, tetapi mereka khawatir karena pelapor kerentanan sudah beberapa kali menghubungi namun tidak mendapat jawaban
      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
    • Proyek ini tampaknya tumbuh terlalu cepat, sampai titik di mana manajemen organisasi menjadi lebih penting daripada pengembangan kode
      Ada yang penasaran apakah mereka juga merujuk pada hal seperti prinsip operasi organisasi bergaya anarkisme
    • Bukankah cukup suruh Claude memperbaiki masalah keamanannya?
    • Sikap yang jujur dalam membagikan situasi dan mau bertanggung jawab terlihat baik. Itu bukan hal mudah, jadi patut diapresiasi
  • 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

    • Ada yang ingin tahu penjelasan lebih konkret tentang cara menyiapkan dev-container atau VM
    • Claude meminta permintaan izin setiap kali dijalankan, jadi dari sisi itu sedikit lebih aman
    • Untuk sandbox AI, sprites.dev dari fly.io cukup bagus
      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

    • Sepertinya lab AI harus berhenti melatih model dengan kode tutorial
    • Servernya sudah terbuka seperti ini, jadi justru mengejutkan kalau kebijakan CORS-nya bukan “*”
    • Ada juga reaksi bahwa ini terlihat seperti “kode yang dibuat hanya dengan vibe”
  • Jadwal pengungkapan kerentanan menjadi masalah
    Ini dilaporkan pada 2025-11-17, tetapi meski sudah dihubungi beberapa kali, tidak ada respons

    • Sekarang tampaknya para pengembang mencoba merespons dengan serius
      Lihat komentar issue GitHub
    • Ada juga reaksi bercanda, “zaman sekarang semua orang lagi vibe coding, jadi isu keamanan itu bad vibes”
  • 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

    • Ada juga yang bertanya kenapa justru aplikasi TUI yang jadi masalah
    • Sebagai alternatif, ada pendapat bahwa Droid dari Factory cukup bagus
  • Mengejutkan bahwa OpenCode didukung oleh YC (Y Combinator)
    Orang mengira YC akan mendorong budaya keamanan yang lebih baik

    • Ada juga reaksi sinis bahwa bagi YC pada akhirnya uang adalah segalanya
    • Dulu ada kasus Flock, alumni YC, yang hardcode password 53 kali
      Untuk detail terkait, lihat komentar ini
    • Ditambah lagi, ironis bahwa OpenCode juga membuat produk auth provider
  • Ada yang mengira OpenCode adalah proyek sukarela, tetapi ternyata proyek bergaya perusahaan yang didukung investor besar

    • Selain repositori GitHub resmi, ada juga proyek pesaing buatan tim charm.sh
    • Mungkin yang dimaksud adalah proyek seperti crush, roocode, atau kilo. Mereka belum punya sponsor 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

    • Mereka merekomendasikan kombinasi ampcode(tautan) dan Crush(tautan) + z.ai GLM
      ampcode bisa dipakai gratis untuk membuat skrip sederhana, dan Crush+GLM cukup baik mengikuti rencana dari Claude atau Codex
    • Ada juga pendapat bahwa lebih sulit menjaga disiplin review dan kontrol kualitas daripada sekadar menambah fitur baru
  • 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