Ne oldu?
31 Mart 2026 sabahı güvenlik araştırmacısı Chaofan Shou, X’te bir şey paylaştı: Anthropic’in kodlama ajanı Claude Code’un npm’deki 2.1.88 sürümünün içinde bir source map dosyası vardı. The Register’a göre bu dosya, aracın sıkıştırılmamış TypeScript kaynağına, yani Anthropic’in bulut depolamasında duran bir zip arşivine işaret ediyordu. Yaklaşık 1.900 dosya ve 512 binden fazla satır kod birkaç saat içinde GitHub’da onlarca depoya kopyalandı.
Anthropic’in açıklaması kısaydı: Bu bir güvenlik ihlali değil, insan hatasından kaynaklanan bir paketleme sorunuydu. Hiçbir müşteri verisi ya da kimlik bilgisi açığa çıkmadı. Sürüm npm’den kaldırıldı. Bir not: Sızan şey modelin kendisi değil. Modelin ağırlıkları ya da eğitim verisi yok, sadece bilgisayarında çalışan komut satırı uygulamasının kodu var.
Source map nedir, neden tehlikeli?
Bir JavaScript projesini yayımlamadan önce genelde paketlersin (bundle): yüzlerce dosya tek bir dosyada birleşir, değişken adları kısalır, boşluklar silinir. Bu kod hızlıdır ama okunmaz. Bir hata olduğunda tarayıcı ya da Node sana “1. satırın 48.213. karakteri” der.
Source map, bu sıkıştırılmış kodu orijinal dosyalara geri bağlayan bir haritadır, genelde .js.map uzantılı bir JSON dosyası. Standarda göre içinde orijinal dosyaların yolları (sources) bulunur. İstersen dosyaların tam metni de (sourcesContent) içine gömülebilir. Hata ayıklarken harikadır: Sıkıştırılmış kod yerine kendi yazdığın satırları görürsün.
Sorun şu: Haritayı paketle birlikte yayımlarsan, kodunu da yorumları ve klasör yapısıyla birlikte yayımlamış olursun. npm’e konan bir JavaScript paketi zaten indirilebilir. Ama sıkıştırılmış kodu okumak zordur. Harita bu zorluğu ortadan kaldırır.
Kendi paketinde bu nasıl olmaz?
filesalanı kullan.package.json’dafilesyoksa npm varsayılan olarak her şeyi pakete koyar. Sadece gereken klasörleri listele. Bu bir “izin listesi”, unutulan dosya dışarıda kalır.- Yayından önce bak.
npm pack --dry-run, pakete girecek dosyaların listesini gösterir. CI’da.mapdosyası görürse hata veren bir kontrol eklemek birkaç satır. - Haritayı bilinçli üret. Bun’ın paketleyicisinde varsayılan ayar haritasız. Harita ihtiyacın varsa onu hata izleme servisine özel olarak yükle, pakete koyma.
Anthropic olayı bir insan hatası olarak tanımladı. İnsan hatasına karşı en iyi çare, kontrolü bir kişinin dikkatine bırakmak yerine yayın sürecine otomatik bir adım olarak eklemek.
Sızıntının yan etkileri
Anthropic, GitHub’a telif hakkı (DMCA) bildirimiyle kaldırma talebi gönderdi. TechCrunch’a göre bildirim yanlışlıkla yaklaşık 8.100 depoya uygulandı, Anthropic’in kendi herkese açık Claude Code deposunun meşru çatalları da dahil. Şirket bunun kaza olduğunu söyleyip talebi bir depo ve 96 çatala indirdi.
Saldırganlar da fırsatı kaçırmadı. Biri, sızan kodda geçen iç paket adlarıyla npm’de boş paketler açtı (typosquatting). Başkaları “sızan Claude Code” diye sahte depolar kurup indirenlere bilgi çalan zararlı yazılım yükledi. Üstelik aynı gece npm’de axios’un zararlı sürümleri yayındaydı. The Hacker News, o saatlerde Claude Code’u npm ile kuranların zararlı axios’u da çekmiş olabileceği uyarısını yaptı.
Kodun içinden ne çıktığına gelince: Videoya göre henüz duyurulmamış özellik bayrakları, arka planda çalışan bir ajan modu ve rakiplerin modeli kopyalamasını zorlaştırmak için sahte araç tanımları vardı. Bu son fikri damıtma saldırıları yazımızda anlattık.
Sonra ne oldu?
Bugün Claude Code’un belgeleri kurulum için yerel (native) yükleyiciyi öneriyor. npm paketi artık JavaScript kodu değil, yükleyiciyle aynı derlenmiş programı kuruyor. 2.1.89’dan itibaren her sürüm, Anthropic’in GPG anahtarıyla imzalanmış bir sağlama listesiyle (checksum manifest) yayımlanıyor.
Düşün
- En son yayımladığın paketin içinde hangi dosyalar var?
npm pack --dry-runile bak. - Yayın sürecinde elle yaptığın hangi adım, unutulduğunda bir sızıntıya yol açar?
Videoyu izle
Kaynaklar (11, İngilizce)
- Fireship: Tragic mistake... Anthropic leaks Claude's source code (video) (yeni sekmede açılır)
- Syntax #993: It's Been A Hell Of Week (yeni sekmede açılır)
- The Register: Anthropic accidentally exposes Claude Code source code (yeni sekmede açılır)
- The Hacker News: Claude Code source leaked via npm packaging error (yeni sekmede açılır)
- InfoQ: Claude Code source leak (yeni sekmede açılır)
- TechCrunch: Anthropic took down thousands of GitHub repos trying to yank its leaked source code (yeni sekmede açılır)
- ECMA-426: Source map format specification (yeni sekmede açılır)
- npm Docs: package.json files field (yeni sekmede açılır)
- npm Docs: npm pack (yeni sekmede açılır)
- Bun Docs: Bundler sourcemap option (yeni sekmede açılır)
- Claude Code Docs: Advanced setup (yeni sekmede açılır)
Kendi cümlelerimizle yazılmış bir özettir, çeviri değildir. Tüm kaynaklar yukarıda.