Anthropic’in kodlama aracı Claude Code’un 1.122 ayar dosyasında 1.379 kimlik doğrulama bilgisi bulundu. Geliştiricilerin çalıştırılmasını onayladığı komutlar ayar dosyalarına kaydedildikten sonra bu dosyalar herkese açık GitHub depolarına yüklendi.
Apiiro, 5 Kasım’da yayımladığı araştırma raporunda herkese açık 103.617 depodaki 104.185 ayar dosyasını incelediğini bildirdi. Araştırma 1-3 Kasım tarihleri arasında yapıldı. Dosyaların 1.122’sinde, yani yüzde 1,1’inde kimlik doğrulama bilgisi tespit edildi.
Bilgilerin açığa çıkma yolu, komut çalıştırma onay süreciyle bağlantılı. Kullanıcı “Onayla ve bir daha sorma” seçeneğini işaretlediğinde Claude Code, onaylanan komutu projenin .claude/settings.local.json dosyasına izin verilen bir kural olarak kaydediyor. Komutta parola veya API anahtarı varsa bu değer de dosyada kalabiliyor.
Claude Code’un ayar belgelerinde bu dosyanın proje kapsamında yalnızca ilgili kullanıcı için geçerli yerel ayarları içerdiği belirtiliyor. Araç, Git deposu içindeyken dosyayı oluşturursa dosya kullanıcının genel Git dışlama listesine ekleniyor; ancak projenin .gitignore dosyasına otomatik olarak eklenmiyor.
Bu nedenle dosya depo herkese açılmadan önce oluşturulmuşsa veya başka bir bilgisayara kopyalanmışsa, Git’in zaten izlediği dosyaların yayımlanmasını yalnızca genel dışlama ayarıyla önlemek zor olabilir. Dosya elle oluşturulduğunda da proje düzeyindeki .gitignore dosyasına eklenmesi gerekiyor.
Bulunan 1.379 bilginin 636’sı hizmet sağlayıcılarının anahtar biçimleriyle eşleşen kimlik doğrulama anahtarlarından, 743’ü ise herkese açık bir sunucu bilgisiyle aynı satırda bulunan parola veya token’lardan oluştu. Bulgular arasında 379 veritabanı parolası, 122 Supabase hizmet rolü anahtarı ve 43 SSH erişim bilgisi de yer aldı.
Açık ayar dosyalarında kimlik doğrulama bilgisi bulunan kuruluşların sayısı 63’tü. Bilgilendirilen şirketlerden biri, açığa çıkan anahtarın o sırada hâlâ geçerli olduğunu doğruladı.
Kimlik doğrulama bilgisi içeren depolarda ayar dosyalarının ilk commit edilmesinden bu yana geçen süre medyan olarak 217 gündü. Bu bulgu, çok sayıda dosyanın açık depolarda uzun süre kaldığını gösteriyor.
Araştırmacılar, mevcut dosyalarda bulunmayan 734 kimlik doğrulama bilgisini de Git’in geçmiş kayıtlarında buldu. Bu değerler 509 deponun eski dosya sürümlerinden geldi. Aynı içerikler, 74 depoya ait 211 fork’ta da kopyalanmıştı.
İnceleme; paylaşılan ayar dosyaları, ajan konuşma kayıtları ve devir notları gibi içerikleri de kapsayacak şekilde genişletildiğinde 1.994 açık depoda 2.539 kimlik doğrulama bilgisi tespit edildi. İlk incelemedeki 1.122 dosya, geçmiş kayıtlarda bulunan 734 bilgi ve toplam 1.994 depo farklı ölçümleri ifade ediyor.
Genel amaçlı kimlik bilgisi tespit araçları da bazı dosyaları bulamadı. gitleaks, kimlik doğrulama bilgisi içeren 1.122 ayar dosyasının 564’ünü; TruffleHog ise 643’ünü tespit etti. Her iki aracın da işaretlemediği dosya sayısı 215’ti.
Tespit açığının bir nedeni, parolaların komut satırında sıradan bir kelime gibi görünebilmesi. Araçlar çoğunlukla belirli hizmetlere ait anahtar öneklerini veya rastgele dizgileri aradığında, mysql -p ya da sshpass -p komutlarının ardından yazılan parolalar sıradan komutun parçası olarak gözden kaçabiliyor.
Claude Code sorumlusu Boris Cherny, 7 Kasım’da Hacker News’teki yorumunda “Böyle bir olayın yaşanmasını önlemek için neler yapabileceğimizi inceliyoruz” dedi. Cherny, Claude Code’da daha önce gizli bilgileri filtreleyen bir özellik bulunmadığını ve söz konusu dosyaların kullanıcılar tarafından oluşturulup sürüm kontrolüne eklendiğini söyledi. Bu açıklama, dosyaların ilk oluşturulma veya yayımlanma sorumluluğunu tek başına Claude Code’a bağlamıyor.
İzlenebilen kimlik doğrulama bilgisi içeren 1.105 deponun 539’unda, Claude’un ortak yazar olarak gösterildiği commit’lerin ilgili ayar dosyasını değiştirdiği görüldü. Ancak bu kayıtlar, Claude’un dosyayı ilk oluşturan veya açık depoya yükleyen taraf olduğunu kanıtlamıyor.
Apiiro; açığa çıkan kimlik doğrulama bilgilerini yenilemeyi, Git’in izlediği dosyaları izleme dışına çıkardıktan sonra proje .gitignore dosyasına eklemeyi önerdi. Raporda ayrıca parolaları komutlara doğrudan yazmak yerine ortam değişkenleriyle kullanmak ve tüm komutları açmak yerine yalnızca gerekli komut kalıplarına izin vermek tavsiye edildi.
Araştırma ekibi, bulunan kimlik doğrulama bilgilerini kullanarak hizmetlere giriş yapmadı veya sunuculara erişim testi gerçekleştirmedi. Bu nedenle rapordaki bulgular, hizmet anahtarı biçimiyle eşleşen ya da açık sunucu bilgisiyle birlikte bulunan değerleri ifade ediyor; hepsinin hâlen geçerli olduğu anlamına gelmiyor.
Comment 0