- 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
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
Tüm ekibin OWASP Insecure Design rehberini anlayıp uygulaması daha önemli
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
Acaba anarşist tarzı organizasyon ilkeleri gibi şeylere de bakıyor musunuz diye merak ediyorum
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
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üvenlik açığının açıklanma takvimi sorunlu
2025-11-17’de bildirilmiş ama defalarca iletişim kurulmasına rağmen yanıt gelmemiş
GitHub issue yorumu incelenebilir
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
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
Ayrıntılar için bu yoruma bakılabilir
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ı
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 ile basit script’ler ücretsiz yapılabiliyor; Crush+GLM ise Claude veya Codex’in planlarını iyi takip ediyor
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ı