Claude Code’un “Bir Daha Sorma” Dosyası GitHub’da Binlerce Kopyada Şifreleri ve Anahtarları Açığa Çıkardı
Geliştiricilerin Claude Code’da onayladıkları komutlara girdikleri şifreler ve API anahtarları, herkesin okuyabileceği genel GitHub depolarında bulundu.
Bir kullanıcı “Evet, bir daha sorma” seçeneğini işaretlediğinde, Anthropic’in yapay zeka kodlama asistanı, gizli bilgiyi de içeren komutu, proje ayarları dosyasında kelimesi kelimesine kaydedebiliyor.
Yazılım güvenlik şirketi Apiiro, 6 Kasım 2026 tarihinde yaptığı açıklamada, bu dosyanın 1.122 genel kopyasında en az bir gizli bilgi bulunduğunu belirtti. Ancak, bu bilgilerin hala çalışıp çalışmadığı test edilmedi. Araştırmacıların bu hafta başında bilgilendirdiği bir şirket, anahtarının hala aktif olduğunu doğruladı.
Söz konusu dosya .claude/settings.local.json olarak adlandırılıyor. Bu dosyayı bir projeden kaldırmak sızıntıyı geri almaz. Çünkü eski sürümleri git geçmişinde ve deponun çatallarında (forks) kalır. Araştırmacıların tavsiyesi, öncelikle rotasyon yapmak: dosyanın şimdiye kadar içerdiği her şifreyi, jetonu ve anahtarı değiştirmek, ardından temizlik yapmak.
Gizli Bilgi Dosyaya Nasıl Giriyor?
Varsayılan olarak, Claude Code çoğu kabuk komutunu çalıştırmadan önce sorar. Kullanıcı “Evet, bir daha sorma” seçeneğini seçerse, izinler belgelerine göre, proje içindeki .claude/settings.local.json dosyasına bir izin kuralı kaydeder. Eşleşen komutlar daha sonraki oturumlarda sormadan çalışır.
Kural sadece istemin sunduğu şeyi kapsar. Bazen bu, npm test * gibi bir kalıp, bazen de tam bir komuttur. Tam komut olduğunda, içine yazılan herhangi bir şifre veya jeton da düz metin olarak kaydedilir.
Araştırmacılar, genel dosyalarda gizli bilgiyi hala içeren kaydedilmiş komutlar buldular. Bu davranışı en son modeller olan Opus 5.5 ve Fable 5.1 ile yeniden ürettiler.
Claude Code, dosyayı git’ten uzak tutmaya çalışır. Bir git deposunda dosyayı ilk kez yazdığında, ayarlar belgelerine göre dosyayı kullanıcının genel git dışlama listesine ekler. O bilgisayardaki Git, bu dosyayı her depoda yok sayar.
Bu koruma, bir kullanıcının bir bilgisayardaki git ayarlarında kalır. Araştırmacılar, zaten commit edilmiş bir dosya için hiçbir şey yapmadığını belirtiyor. Claude Code, dosyayı asla projenin kendi .gitignore dosyasına eklemez. Bu nedenle koruma projeyle birlikte taşınmaz.
Araştırmacıların izlediği 1.105 deponun 539’unda, Claude’u ortak yazar olarak listeleyen bir commit dosyayı değiştirdi. Bunu, Claude’un dosyayı sık sık kendisinin commit ettiği şeklinde yorumluyorlar.
Apiiro Neler Buldu?
Apiiro’nun genel GitHub araması, araştırma raporuna göre 103.617 depoda dosyanın 104.185 kopyasını buldu. Bunların yaklaşık %1,1’i, yani 1.122 kopyası, en az bir gizli bilgi içeriyor. Hep birlikte 1.379 farklı gizli bilgi barındırıyorlar.
Bir değer, bilinen bir anahtar formatıyla eşleştiğinde veya bir şifre ya da jeton genel bir sunucunun adresiyle birlikte bulunduğunda gizli olarak sayıldı. Bir yapay zeka inceleyicisi de onaylamak zorundaydı. Araştırmacılar, bu gizli bilgilerin herhangi birinin kullanılıp kullanılmadığını belirtmiyorlar.
Gizli bilgilerin üçte birinden fazlası, 379 veritabanı şifresi dahil olmak üzere doğrudan bir veritabanını açıyor. Diğerleri arasında genel sunucular için 43 SSH girişi, GitHub, GitLab ve npm için 42 jeton ve 23 AWS anahtarı bulunuyor.
Bu dosyaların sahipleri arasında, çoğu her büyüklükteki yazılım şirketi olmak üzere 63 kuruluş yer alıyor. Araştırmacılar, en güçlü vakalar arasında bir veritabanı satıcısının kendi yönetici düzeyinde bulut anahtarı ve bir tıbbi kayıt veritabanının sahip şifresinin bulunduğunu belirtiyor.
Pazartesi itibarıyla, gizli bilgi içeren her dosya hala deposunun varsayılan dalında bulunuyordu. Bu depoların yarısında en az 217 gündür oradaydı.
Dosyanın eski sürümleri, mevcut herhangi bir kopyada bulunmayan 734 ek gizli bilgi içeriyor. Bu durum genellikle dosyanın silinmesinden kaynaklanıyor. Çatallar (forks) dosyaları daha da yayıyor: 74 deponun 211 çatalı, orijinallerle aynı gizli bilgileri taşıyor.
Gizli bilgiler ayrıca, ekiplerin kasıtlı olarak commit ettiği 76.011 paylaşılan .claude/settings.json dosyasının 298 kopyasında da bulunuyor ve çoğunlukla izin kuralları içinde yer alıyor. Bunlar, eski sürümler ve kaydedilmiş ajan sohbet günlükleri dahil olmak üzere, toplamda 1.994 depoda 2.539 gizli bilgiye ulaşıyor.
Araştırmacıların karşılaştırdığı 16 kodlama ajanından Claude Code, varsayılan olarak tam onaylanmış komutu bir proje dosyasına kaydettiği doğrulanan tek ajan.
Ne Yapmalı?
Geliştiriciler için araştırmacılar şu adımları öneriyor:
- GitHub kuruluşunuzda
.claude/settings.local.jsonve.claude/settings.jsondosyalarını arayın. Dosyalar gitmiş olsa bile her deponun git geçmişini kontrol edin. - Temizlemeden önce, dosyaların şimdiye kadar içerdiği her şifreyi, jetonu ve anahtarı değiştirin.
git rm --cached .claude/settings.local.jsonkomutuyla yerel dosyayı git takibinden çıkarın ve deponun kendi.gitignoredosyasına ekleyin.- Kendi bilgisayarınızdaki dosyayı, hiç commit edilmemiş olsa bile açın ve gizli bilgi içeren her kuralı silin.
- Gizli bilgileri komutlardan uzak tutun. Bunları
$DB_URLgibi bir gizli bilgi yöneticisinden değişken olarak referans alın. Böylece kaydedilen kural gizli bilgiyi değil, değişken adını tutar. - Tek komutlar yerine Bash (npm run:*) gibi kalıpları onaylayın.
GitHub’a hiç ulaşmayan kopyalar bile önemli, diyor araştırmacılar. Dosya, proje klasöründe düz bir JSON dosyasıdır ve bir npm paketi, bir Docker görüntüsü, bir zip arşivi veya senkronize edilmiş bir klasör içinde de bırakılabilir.
Kötü amaçlı yazılımlar daha önce geliştirici makinelerinde gizli bilgi aramıştır. Eylül 2025’te, Shai-Hulud solucanı enfekte bilgisayarlarda TruffleHog gizli bilgi tarayıcısını çalıştırdı. Tarayıcı dosyaların yarısından fazlasını gizli olarak işaretledi.
Yaygın gizli bilgi tarayıcıları bu dosyaların çoğunu kaçırıyor. Araştırmacılar, araçların doğrulama adımı olmadan her kopyada gitleaks ve TruffleHog’u çalıştırdı. Gizli bilgi içeren 1.122 dosyanın 564’ünü gitleaks, 643’ünü TruffleHog işaretledi ve 215’ini hiçbiri işaretlemedi.
Çoğu kaçırılan, komutların içine yazılan şifrelerdir. Tarayıcılar bilinen anahtar formatlarını arar. PGPASSWORD=, sshpass -p veya mysql -p sonrası bir şifre, sıradan bir komut satırında sıradan bir kelime gibi görünür.
Güvenlik ekipleri için araştırmacılar şunları öneriyor:
.claude/,.cursor/,.gemini/ve.specstory/gibi ajan klasörlerini ve ajan bellek dosyalarını, dizüstü bilgisayarlarda ve depolarda.envdosyaları gibi gizli bilgi içeriyormuş gibi ele alın.- Bunları ön-commit ve CI gizli bilgi taramasına ekleyin, git geçmişi dahil. Tarayıcının sadece bilinen anahtar formatlarını değil, komutların içindeki şifreleri de yakaladığından emin olun.
.claude/settings.local.jsondosyasını kuruluşun.gitignoreşablonlarına ekleyin.- Öncelikle genel bir sunucuyla eşleştirilmiş kimlik bilgilerini kontrol edin, çünkü bunlar erişim sağlayanlardır.
Önceki Raporlar
Claude Code kullanıcıları bu davranışı daha önce de bildirmişti. 11 Ağustos 2025’te açılan önceki bir hata raporu, API anahtarları ve jetonları içeren onaylanmış komutların settings.local.json dosyasında kelimesi kelimesine saklandığını belirtiyordu.
Otomatik bir bot, 3 Ocak 2026’da 60 gün boyunca etkinlik olmaması nedeniyle bu raporu “planlanmamış” olarak kapattı.
Bugün itibarıyla, araştırmacıların bahsettiği dört ilgili raporun hepsi aynı bot tarafından kapatıldı, en sonuncusu dün. Hiçbiri Anthropic’ten bir yanıt almadı, diyorlar.

Yorumlar 0
Henüz yorum yapılmamış. İlk yorumu siz yazın.