3 puan yazan GN⁺ 2026-01-13 | 1 yorum | WhatsApp'ta paylaş
  • OpenCode'un eski sürümlerinde, kimlik doğrulaması olmadan rastgele kod çalıştırılmasına izin veren kritik bir uzaktan kod çalıştırma açığı keşfedildi
  • v1.1.10 öncesi sürümler otomatik olarak bir HTTP sunucusu çalıştırıyor ve bu sunucu kimlik doğrulama olmadan rastgele komut çalıştırma, dosya okuma ve terminal oturumu oluşturma imkanı veriyor
  • v1.0.216 öncesinde ise yalnızca bir web sitesini ziyaret etmekle bile kullanıcının yerel ortamında kod çalıştırılabiliyordu
  • En güncel sürümde (v1.1.10) sunucu varsayılan olarak devre dışı bırakıldı, ancak etkinleştirildiğinde hâlâ kimlik doğrulaması yok
  • Bu açık CVE-2026-22812 olarak kaydedildi; geliştiricilerin ve kullanıcıların derhal güncelleme yapması ve ayarları gözden geçirmesi gerekiyor

Açığın özeti

  • OpenCode, açık kaynaklı bir AI kodlama asistanı; v1.1.10 öncesinde çalıştırıldığında otomatik olarak bir HTTP sunucusu (varsayılan port 4096+) başlatıyor
    • Sunucu POST /session/:id/shell, POST /pty, GET /file/content gibi endpoint'ler sunuyor
    • Kimlik doğrulama süreci olmadığından, bağlanabilen tüm istemciler kullanıcı yetkileriyle kod çalıştırabiliyor
  • Sunucu çalışırken kullanıcıya görsel bir gösterge sunulmuyor, bu yüzden açıkta olup olmadığını anlamak zor
  • CORS politikası *.opencode.ai olarak hardcode edilmiş; bu nedenle opencode.ai veya alt alan adlarından sunulan sayfalar sunucu API'sine erişebiliyor
    • Bu alan adı ele geçirilirse ya da bir XSS açığı bulunursa, sunucusu etkin durumdaki tüm kullanıcılar saldırı hedefi olabilir

Saldırı vektörleri

  • v1.0.216 öncesi: rastgele bir web sitesi, OpenCode çalıştıran kullanıcının yerel makinesinde kod çalıştırabiliyor
  • v1.1.10 öncesi: yerel süreçler veya localhost sayfaları kimlik doğrulama olmadan kod çalıştırabiliyor
  • Sunucu tüm sürümlerde etkinleştirildiğinde:
    • Yerel süreçler ve localhost sayfaları kimlik doğrulama olmadan kod çalıştırabiliyor
    • --mdns bayrağı kullanıldığında yerel ağdaki tüm cihazlar erişebiliyor
    • Sunucunun çalıştığını gösteren bir işaret yok, kullanıcı maruz kaldığını fark etmeyebiliyor
    • opencode.ai alan adı veya alt alan adlarından kod çalıştırılabiliyor

Saldırı örnekleri (Proof of Concept)

  • Yerel saldırı: Sunucu çalışırken, yerel bir süreç curl komutuyla oturum oluşturup ardından id > /tmp/pwned.txt komutunu çalıştırabiliyor
  • Tarayıcı tabanlı saldırı (v1.0.216 öncesi): Bir web sayfası, fetch isteğiyle yerel sunucuya komut göndererek uzak bir script'i indirip çalıştırabiliyor
    • Firefox'ta çalıştığı doğrulandı; Chrome ise yerel ağ erişim koruması nedeniyle kullanıcı onay penceresi gösterebilir

Kullanıcıların alması gereken önlemler

  • opencode --version ile sürümü kontrol edip v1.1.10 veya üstüne güncelleyin
  • Yapılandırma dosyasında server.port veya server.hostname ayarlarının etkin olup olmadığını kontrol edin
  • --mdns bayrağını kullanmayın (0.0.0.0'a bind ederek tüm ağa açar)
  • Sunucuyu kullanmak zorundaysanız, opencode.ai ve alt alan adlarına erişmeyin
  • Sunucu etkin olduğunda yerel süreçlerin kimlik doğrulama olmadan erişebildiğini bilerek hareket edin

Açıklanma takvimi

  • 2025-11-17: İlk bildirim e-postayla gönderildi, yanıt gelmedi
  • 2025-12-27: GitHub Security Advisory gönderildi, yanıt gelmedi
  • 2025-12-29: Başka bir kullanıcı tarafından açık raporlandı
  • 2025-12-30: v1.0.216'da CORS kısıtlaması uygulandı
  • 2026-01-09: v1.1.10'da sunucu varsayılan olarak devre dışı bırakıldı
  • 2026-01-11: Tam açıklama yapıldı

Önerilen aksiyonlar

  • CORS'u en az sayıda alan adıyla sınırlandırın (v1.0.216'da uygulandı)
  • Sunucuyu varsayılan olarak devre dışı bırakın (v1.1.10'da uygulandı)
  • Tüm sunucu isteklerine kimlik doğrulama ekleyin
  • Sunucu çalışırken kullanıcıya açık bir gösterge sunun
  • --mdns seçeneğinin 0.0.0.0'a bind olduğunu dokümantasyonda açıkça belirtin
  • Ağ iletişiminde TLS kullanın
  • GitHub Security Advisory ve CVE-2026-22812 için resmi duyuru yayımlayın
  • Güvenlik bildirimi e-postaları ve GHSA uyarıları için izlemeyi güçlendirin
  • OpenCode bakımcıları, opencode.ai ve kullanıcılar arasındaki güven ilişkisini netleştirin

Referans

  • CVE: CVE-2026-22812
  • Etkilenen paket: npm opencode-ai
  • Güncel bilgiler ve iletişim: cy.md

1 yorum

 
GN⁺ 2026-01-13
Hacker News yorumları
  • Bakımcı olarak bu güvenlik raporuna yanıt sürecini gerektiği gibi yönetemediğimi kabul ediyorum
    Kullanım hızla artarken issue’lar da patladı; bu hafta uzmanlarla görüşüp bug bounty programı ve güvenlik denetimi başlatmayı planlıyorum

    • Bug bounty ya da denetime para harcamaktansa organizasyonu yeniden düzenlemeye ve çalışan eğitimine yatırım yapılmalı
      Tüm ekibin OWASP Insecure Design rehberini anlayıp uygulaması daha önemli
    • İlk başta olumlu bakmıştım ama güvenlik açığını bildiren kişilerin defalarca ulaşmasına rağmen yanıt alamamış olması endişe verici
      OpenCode tanınmış bir açık kaynak kodlama ajanı olduğu için çoktan kötüye kullanılmış olabilir
      En azından artık modeli gVisor gibi bir sandbox ortamında çalıştırmak gerektiğini düşünüyorum
      Hızlı hareket edilmezse daha fazla saldırgan RCE açıklarını hedef almaya başlayabilir
    • Proje o kadar hızlı büyüdü ki artık organizasyon yönetimi kod geliştirmeden daha önemli hale gelmiş gibi görünüyor
      Acaba anarşist tarzı organizasyon ilkeleri gibi şeylere de bakıyor musunuz diye merak ediyorum
    • Claude’a güvenlik sorunlarını düzeltmesini söylemek yetmez mi?
    • Durumu açıkça paylaşıp sorumluluk almaya çalışmanız takdire değer. Kolay değil, teşekkürler
  • Birçok kişi OpenCode gibi araçları yerel ortamda yetki ayrımı olmadan çalıştırıyor
    Eklentiler de varsayılan olarak sınırsız erişim varsayımıyla tasarlanmış ve kaynak tüketimleri yüksek
    En azından bunları bir dev-container veya VM içinde çalıştırıp gereken dosyaları SSHFS ya da Samba ile bağlamak iyi olur
    Uğraşmak istemiyorsanız aylık 5 dolarlık bir VPS de kullanılabilir

    • dev-container ya da VM kurulumunun nasıl yapılacağını daha somut anlatabilir misiniz diye sorulmuş
    • Claude her çalıştırmada izin talep ettiği için bu açıdan biraz daha güvenli
    • Yapay zeka sandbox’ı olarak fly.io’nun sprites.dev hizmeti oldukça iyi
      Sunucuyu qemu ile çalıştırırken quickemu öneriliyor
      zed’in SSH remote özelliği de faydalı; Claude Code veya OpenCode ile birlikte kullanılabiliyor
  • CORS düzeltmesi harici web siteleri üzerinden kötüye kullanımı engelledi ama temelde localhost üzerinde kod çalıştırılabilen bir yapı olması asıl sorun
    Neovim varsayılan olarak domain socket kullanıyor, VS Code’un SSH daemon’ında ise kimlik doğrulama süreci var
    Kimlik doğrulama olmadan istemci girdilerini çalıştıran yerel sunucu LCE (Local Code Execution) açığıdır,
    buna tarayıcı istekleri üzerinden erişilebildiğinde ise RCE (Remote Code Execution) haline gelir

  • Kimlik doğrulama olmadan RCE sağlayan bir HTTP endpoint’inin CLI aracına konmuş olması ve üstüne bir de CORS bypass eklenmesi şoke edici

    • Görünüşe göre yapay zeka laboratuvarlarının tutorial kodlarıyla modelleri eğitmeyi bırakması gerekiyor
    • Sunucu bu kadar açıkken CORS politikasının “*” olmaması daha da şaşırtıcı
    • Bunun “tam anlamıyla vibe ile yazılmış kod” gibi göründüğünü söyleyenler de var
  • Güvenlik açığının açıklanma takvimi sorunlu
    2025-11-17’de bildirilmiş ama defalarca iletişim kurulmasına rağmen yanıt gelmemiş

    • Şimdi geliştiriciler konuyu ciddiyetle ele alıyor gibi görünüyor
      GitHub issue yorumu incelenebilir
    • “Bu aralar herkes vibe coding yaptığı için güvenlik sorunları bad vibes sayılıyor” şeklinde şakalı tepkiler de var
  • Sunucu varsayılan olarak kapalı olsa bile açıldığında hâlâ ciddi bir sorun
    localhost üzerinde herhangi bir web sayfası kod çalıştırabiliyor ve kimlik doğrulama olmadan yerel süreçler de başlatılabiliyor
    Kullanıcıya sunucunun çalıştığını gösteren bir işaret de yok
    TUI uygulamaları normalde böyle şeyler yapmadığı için güvenilir kabul edilir; bu olay ise o güveni ciddi biçimde zedeledi

    • Neden özellikle TUI uygulaması olmasının sorun edildiğini soranlar da olmuş
    • Alternatif olarak Factory’nin Droid ürününü önerenler var
  • OpenCode’un YC (Y Combinator) tarafından destekleniyor olması şaşırtıcı
    YC’den daha iyi bir güvenlik kültürü teşvik etmesi beklenirdi

    • YC için sonuçta her şeyin para olduğunu söyleyen alaycı yorumlar da var
    • Daha önce YC çıkışlı Flock’un parolayı 53 kez hardcode ettiği bir örnek de olmuştu
      Ayrıntılar için bu yoruma bakılabilir
    • Üstelik OpenCode’un bir Auth provider ürünü de geliştiriyor olması ironik bulunuyor
  • OpenCode’un gönüllü bir proje olduğu sanılıyordu ama aslında büyük yatırımcılar tarafından desteklenen kurumsal bir proje olduğu ortaya çıktı

    • Resmi GitHub deposu dışında charm.sh ekibinin yaptığı rakip bir proje olduğu da söylendi
    • Muhtemelen crush, roocode ve kilo gibi projeler kastediliyordu; bunların henüz büyük sponsorları yok
  • Sürekli özellik eklenip temel bakımın ihmal edilmesi nedeniyle kullanmayı bırakmıştım
    Amaç birden fazla modeli aynı anda kullanmaktı fakat bağlam paylaşımı verimsiz olduğu için pratik değildi
    Şu anda Claude Code ile Codex’i birlikte kullanıyorum
    Yine de birden fazla modeli birleştirecek açık bir platforma ihtiyaç hâlâ çok büyük

    • ampcode(bağlantı) ile Crush(bağlantı) + z.ai GLM kombinasyonu öneriliyor
      ampcode ile basit script’ler ücretsiz yapılabiliyor; Crush+GLM ise Claude veya Codex’in planlarını iyi takip ediyor
    • Yeni özellik eklemekten daha zor olan şeyin inceleme ve kalite kontrol disiplinini korumak olduğu da söyleniyor
  • Başta Aider’ı sevmiştim ama neredeyse hiç bakım yapılmadığı için sık sık sorun yaşadım
    OpenCode’u kurmayı düşünürken bu olay yüzünden tereddütte kaldım
    Modele bağımlı olmayan açık kaynak CLI LLM asistanlarının bu kadar az olması şaşırtıcı