- Güvenlik araştırma ekibi, CodeRabbit’in prodüksiyon sunucusunda uzaktan kod çalıştırma (RCE) ve API token’ları ile gizli bilgilerin sızdırılmasını başardı
- Rubocop kullanan bir PR ile ortam değişkenleri ele geçirildi; PostgreSQL erişimi ve 1 milyondan fazla depoda okuma/yazma imkanı elde edildi
- GitHub App’in private key’inin sızdırılmasıyla, public/private depolar dahil geniş çaplı depolara zararlı kod enjekte etme, kaynak kodunu değiştirme gibi gerçek zararlar mümkün hale geldi
- CodeRabbit tarafı, açık bildirildikten sonraki saatler içinde hızla müdahale etti ve güvenlik önlemlerini güçlendirdi
- Harici araçlar çalıştırılırken sandbox izolasyonu, en az yetki ve ağ erişiminin engellenmesi gibi önlemlerle güvenlik olaylarının önlenmesi gereği vurgulandı
Giriş
- Ocak 2025’te Kudelski Security araştırma ekibi, CodeRabbit’teki ciddi bir güvenlik açığını kamuoyuna açıkladı
- PR inceleme otomasyonu için yaygın biçimde kullanılan CodeRabbit’te uzaktan kod çalıştırma (RCE), ortam değişkenleri ile hassas bilgilerin sızması ve 1 milyondan fazla depoda okuma/yazma yetkisi elde edilmesi gibi kritik sorunlar doğrulandı
- Bu yazı, Black Hat USA’de sunulan açığın ayrıntılı analizini içeriyor ve kod tabanlı inceleme araçları ile entegre sistemlerdeki zafiyetlere dair gerçek bir örnek olarak yüksek referans değeri taşıyor
- Bildirilen açıklar, raporlamanın hemen ardından hızlıca yamandı
CodeRabbit’e genel bakış
- CodeRabbit, GitHub/GitLab Marketplace’te en çok kurulan yapay zeka tabanlı kod inceleme uygulaması
- İki platformda da 1 milyon depo ve 5 milyon pull request inceliyor
- Kullanıcı bir PR oluşturduğunda veya güncellediğinde, yapay zeka motoru kodu analiz ederek yorum ve önerileri otomatik üretiyor
- Kod özeti, güvenlik açığı tespiti, iyileştirme önerileri, diyagram üretimi gibi alanlarda geliştirici verimliliğini ciddi biçimde artırıyor
CodeRabbit kullanımı ve yetki yapısı
- Pro plan, linter ve SAST (statik analiz) araçlarıyla entegrasyon sunuyor
- GitHub hesabıyla kimlik doğrulama ve uygulama kurulumu sırasında, seçilen depolara okuma/yazma yetkisi veriliyor
- Bu yetki yönetimi kötüye kullanılırsa, kurulu olduğu tüm depolardaki koda doğrudan etki edebilir
Harici araç çalıştırma ve istismarın keşfi
- CodeRabbit, PR içindeki kod değişikliklerini algıladığında birden fazla harici statik analiz aracını (ör. Rubocop) otomatik olarak çalıştırıyor
- Rubocop,
.rubocop.yml yapılandırma dosyası üzerinden harici Ruby eklenti dosyalarını (ext.rb vb.) yükleyebilecek şekilde tasarlanmış
- Saldırgan,
.rubocop.yml ve ext.rb içine kötü amaçlı kod yerleştirip PR göndererek CodeRabbit’in bu kodu uzak sunucuda çalıştırmasını sağlayabiliyor
- Bu teknikle çalışan kod, sunucudaki tüm ortam değişkenlerini saldırganın sunucusuna gönderdi
Ortam değişkeni sızıntısının analizi
- Sızan ortam değişkenleri arasında çeşitli servislerin API key’leri, token’ları ve parolaları bulunuyordu
- Anthropic/OpenAI API anahtarları, encryption salt/password, GitHub App private key’i, PostgreSQL bağlantı bilgileri vb.
- RCE üzerinden veritabanına erişim, kod değiştirme ve servis içi bilgilerin sızdırılması gibi ikincil etkiler büyük ve yayılım potansiyeli yüksek
- Gerçek sunucuda daha ileri kötü amaçlı keşif yapılabilirdi; ancak servis operasyonu gözetilerek yalnızca minimum doğrulama yapılıp duruldu
1 milyon depoda okuma/yazma yetkisi elde edilmesi
- Ortam değişkenlerinde yer alan GITHUB_APP_PEM_FILE (private key) kullanılarak GitHub API’ye kimlik doğrulama yapılabiliyordu
- CodeRabbit’in erişebildiği tüm depolarda (public/private dahil)
- kaynak kodunu okuma/yazma, release dosyalarını değiştirme (tedarik zinciri saldırısı), git geçmişini değiştirme gibi son derece güçlü yetkiler kullanılabiliyordu
- Yeniden üretim kodu (PoC) yayımlandı ve açığın pratikte istismar edilebilir olduğu kanıtlandı
PoC özeti
- PyGitHub gibi kütüphaneler kullanılarak sızdırılan private key, App ID vb. ile istenen herhangi bir depo için erişim token’ı üretilebildi
- Bu token ile private repository klonlama, dosya değiştirme, yeni commit atma ve release dosyalarını manipüle etme işlemleri otomatikleştirilebiliyordu
CodeRabbit’in şirket içi/gizli depolarının ihlal edilebilmesi
- CodeRabbit organizasyonu da bu uygulamayı kendi servisinde kurup kullandığı için, CodeRabbit’in iç kaynak kodu depolarına erişmek ve bunları klonlamak da mümkündü
- Yalnızca organizasyon adı biliniyorsa, kurulum ID’si sorgulanıp ilgili depo listesine doğrudan erişmek mümkün oluyordu
Etki özeti
- Private repository’lere yetkisiz erişim ve kişisel veri sızıntısı
- Kaynak kod manipülasyonu, zararlı yazılım/arka kapı ekleme gibi tedarik zinciri saldırısı tehditleri
- GitHub Actions gibi ek zafiyetlerle zincirleme kullanım ihtimali
- Doğrudan RCE nedeniyle veri yıkımı, servis kesintisi ve diğer hizmetlere sıçrayan zararlar
Bağlam ve yapay zekanın karar sınırları
- Saldırı sırasında bile PR’nin kendisi CodeRabbit tarafından normal şekilde incelendi; açıkla ilgili uyarı yorumu bıraksa da tehdit oluşturan ifadeyi fiilen tespit edemedi
- Bu durum, “yapay zeka kod inceleme aracı”nın gerçek risk bağlamını her zaman anlayamadığını gösteriyor
Müdahale ve öneriler
- CodeRabbit, açık bildirildikten sonraki saatler içinde Rubocop’u devre dışı bıraktı, gizli bilgileri yeniledi ve sistem denetimi yaptı
- Sorun, sandbox uygulanmayan bir araçta (Rubocop) ortaya çıktı; müdahale sonrası tüm harici araçların izole ortamlarda çalıştırılması yönünde iyileştirme yapıldı
- Güvenliği güçlendirmek için, harici araç çalışma ortamında ortam değişkenlerinin en aza indirilmesi, ağa erişebilen IP’lerin sınırlandırılması ve internet erişiminin kapatılması gibi savunmacı tasarım gereksinimleri vurgulandı
Sorumlu açıklama ve sonuç
- Ocak 2025’te, bildirim sonrasında hızlı müdahale ve düzeltme adımları atıldı
- Çalışma PoC ile sınırlı kaldı; ancak kötü niyetli bir saldırganın yüksek değerli depoları seçerek büyük ölçekli fidye yazılımı veya yıkıcı tedarik zinciri saldırıları için bunu kolayca kötüye kullanabileceği görüldü
- Harici analiz araçları ve yapay zeka tabanlı otomasyon servisleriyle entegrasyonda, sandbox ve en az yetki ilkesinin ne kadar kritik olduğu bir kez daha doğrulandı
Henüz yorum yok.