NNF
Blog
AI
NNFNNF
··6 dk okuma
Paylaş

Claude Code npm Olayı: Bir Hack Değil, Ama Hafife Alınmaması Gereken Ciddi Bir Sızıntı

Claude Code source map sızıntısının detaylı analizi — gerçekte ne oldu, ajan araçları için neden önemli ve ekipler şimdi ne yapmalı.

Claude Code npm Olayı: Bir Hack Değil, Ama Hafife Alınmaması Gereken Ciddi Bir Sızıntı

Mart 2026'nın sonunda geliştirici dünyasında hızlı yayılan bir iddia vardı: Claude'un npm paketi "hacklendi". İlk bakışta bu ifade, bir bakımcı hesabının ele geçirilip zararlı sürüm yayımlanması gibi klasik bir supply chain saldırısını çağrıştırıyordu. Ancak kamuya açık veriler biraz daha dikkatli okunduğunda tablo farklı görünüyor.

Buradaki olay, en güçlü bulgulara göre doğrudan bir malware dağıtımı değil. Daha çok, npm üzerinden dağıtılan Claude Code paketine yanlışlıkla eklenmiş bir source map dosyası nedeniyle kaynak kodun yeniden oluşturulabilir hale gelmesi. Yani ortada "pakete kötü amaçlı kod enjekte edildi" türünde bir vaka olduğuna dair güçlü kanıt yok. Buna karşılık, agentic bir geliştirici aracının iç yapısının bu kadar görünür hale gelmesi de başlı başına ciddi bir güvenlik ve operasyon meselesi.

Olay tam olarak neydi?

31 Mart 2026'da güvenlik topluluğunda dolaşan bulgular, @anthropic-ai/claude-code paketinin 2.1.88 sürümünde yer alan cli.js.map dosyasının, Claude Code'un okunabilir TypeScript kaynaklarının büyük bölümünü yeniden üretmeye yetecek kadar bilgi içerdiğini gösterdi. Kısa süre içinde bu source map'ten türetilmiş olduğu iddia edilen çeşitli GitHub aynaları da ortaya çıktı.

Bu olayın önemli tarafı şu: source map dosyaları normalde geliştirici deneyimi ve debug süreçleri için kullanılır. Fakat yanlış yerde, yanlış paketle ve herkese açık biçimde dağıtıldıklarında, minify edilmiş ya da bundle edilmiş kodun arkasındaki yapıyı yeniden görünür kılabilirler. Bazı durumlarda bu yalnızca geliştirici konforunu etkileyen küçük bir hata gibi görünür. Bazı durumlarda ise ürünün iç mantığını, koruma katmanlarını, entegrasyon yüzeylerini ve henüz duyurulmamış özelliklerini gereğinden fazla açığa çıkarır.

Claude Code gibi bir araçta ikinci kategori daha gerçekçi. Çünkü bu araç sıradan bir frontend bundle'ı değil; kod okuyabilen, dosya düzenleyebilen, komut çalıştırabilen ve çeşitli geliştirme yüzeyleriyle etkileşebilen bir ajan ortamı.

"Hacklendi" demek neden tam doğru değil?

Şu ana kadar kamuya açık en sağlam göstergeler, olayın bir paketleme/artifact exposure problemi olduğunu düşündürüyor. Yani elimizdeki veriler, Anthropic'in bulut altyapısının ihlal edildiğini ya da bu npm sürümüne zararlı kod enjekte edildiğini kanıtlamıyor.

Bu ayrım önemli.

Çünkü geliştirici ekosisteminde iki çok farklı olayı sık sık aynı cümleyle anlatıyoruz:

  • Bir paketin ele geçirilip içine malware konulması
  • Bir paketin içine istemeden debug ya da build artifact'ı koyulması

İkisi de güvenlik olayıdır, ama risk profilleri aynı değildir.

İlk senaryoda ana tehdit, paketi kuran makinelerin doğrudan kompromize olmasıdır. İkinci senaryoda ise ana tehdit, ürünün iç yapısının saldırganlar ve araştırmacılar için çok daha düşük maliyetle analiz edilebilir hale gelmesidir. Bu da yeni açıkların bulunmasını, koruma katmanlarının tersine mühendisliğini ve ürün yol haritasının istemeden ortaya saçılmasını kolaylaştırabilir.

Neden önemsenmeli?

"Kaynak kod görünmüş, ne olacak?" yaklaşımı genelde fazla rahat bir bakıştır. Özellikle Claude Code gibi ajan tabanlı araçlarda mesele yalnızca fikri mülkiyet değildir.

Böyle bir araçta kaynak kodun veya detaylı source map bilgisinin görünür hale gelmesi şu alanlarda etkili olabilir:

1. Güven sınırlarının daha kolay haritalanması

Bir ajan aracının en kritik noktaları, neyi ne zaman okuyabildiği, hangi komutları hangi izin modeliyle çalıştırdığı, subprocess ve hook zincirlerinin nasıl davrandığı ve uzak servislerle nasıl haberleştiğidir. Kod görünür oldukça bu sınırları anlamak kolaylaşır.

2. Savunma mekanizmalarının tersine mühendisliği

Kâğıt üstünde "sandbox var", "izin sistemi var", "prompt injection önlemleri var" demek başka şey; bunların uygulamada nasıl bağlandığını koddan takip etmek başka şeydir. Source exposure, saldırganın maliyetini düşürür.

3. Ürün yol haritasının istemeden açığa çıkması

Source exposure olaylarının en sık görülen yan etkilerinden biri, feature flag'lerin, deneysel modüllerin ve henüz duyurulmamış özelliklerin erken görünmesidir. Bu, doğrudan bir güvenlik açığı olmayabilir; ama ürün ve rekabet tarafında ciddi etkiler yaratabilir.

4. Güven ilişkisinin zedelenmesi

Claude Code giderek daha fazla geliştiricinin günlük akışında yer alıyor. Böyle araçlar yalnızca "yardımcı yazılım" değil; kimi zaman build, inceleme, refactor, güvenlik taraması ve otomasyon zincirlerinin bir parçası. Dolayısıyla dağıtım artefact'larında yaşanan özensizlikler, ürüne duyulan güveni teknik etkisinin ötesinde sarsabiliyor.

Npm tarafı neden ayrıca önemli?

Anthropic'in güncel dokümantasyonu bugün açık biçimde şunu söylüyor: npm kurulumu deprecated. Şirket, mümkünse native installer kullanılmasını öneriyor. Ayrıca Claude Code'un 2.1.15 sürüm notlarında npm kurulumları için bir deprecation bildirimi eklendiği görülüyor.

Bu bilgi tek başına "bu olay yüzünden npm'den çıkılıyor" demek için yeterli değil. Böyle bir nedensellik iddiasını doğrulayan resmî bir açıklama görmüyoruz. Ama pratik açıdan şu sonucu doğuruyor:

Bir ekip hâlâ Claude Code'u npm üzerinden kuruyorsa, bu ekip dağıtım zinciri ve artefact yönetimi bakımından ayrı ele alınmalı. Çünkü native installer ile npm global install aynı operasyonel riskleri taşımıyor.

Teknik ekipler şimdi ne yapmalı?

Bu tür olaylarda internetin büyük kısmı iki uçtan birine savruluyor: ya panik ya da küçümseme. Doğru tavır genelde ortada.

Bizce ekiplerin atması gereken en mantıklı adımlar şunlar:

Kurulum yolunu envanterleyin

Önce ekipte Claude Code'un nerede ve nasıl kurulu olduğunu bilin. Sadece laptop'lara bakmayın. Self-hosted runner'lar, paylaşılan geliştirme makineleri, golden image'lar ve iç araç sunucuları da kapsamda olmalı.

Npm kurulumlarını ayırın

Npm ile kurulu kopyalar varsa bunları ayrıca inceleyin. Hangi sürüm kullanılmış, hangi tarihte çekilmiş, local cache'lerde ne tutuluyor, bunu netleştirin.

Olayı "malware compromise" gibi değil, "artifact exposure" gibi yönetin

Elinizde zararlı kod kanıtı yoksa yanlış alarm üretmeyin. Ama bunun önemsiz bir packaging hatası olduğunu da varsaymayın. İç analiz, güvenlik review ve sürüm geçişi yine de gerekli.

Daha geniş güvenlik resmine bakın

Claude Code gibi ajan araçları zaten hooks, MCP, subprocess, shell access ve izin modelleri yüzünden yüksek etki alanına sahip. Bu olay, sadece source map sızıntısını değil, genel hardening seviyenizi gözden geçirmek için de iyi bir işaret olabilir.

Daha büyük ders ne?

Ajan tabanlı geliştirici araçlarında güvenlik sadece modelde ya da prompt'ta başlamıyor. Dağıtım paketi, build pipeline'ı, debug artefact'ları, installer yolu, cache davranışı ve permission modeli de ürünün güvenlik sınırının parçası.

Claude Code npm olayı bize şunu bir kez daha hatırlatıyor: modern araçlarda "yayınlanan dosya" ile "çalışan ürün" arasındaki çizgi artık çok daha ince. Yanlışlıkla eklenen bir source map bazen doğrudan bir exploit kadar gürültü çıkarmaz. Ama doğru ellerde, sonraki açıkların bulunmasını ciddi biçimde hızlandırabilir.

Bu yüzden bu olayı ya abartıp "tam hack" diye anlatmak ya da küçümseyip "sadece map dosyası" demek ikisi de eksik kalıyor. Daha doğru ifade şu:

Bu, doğrudan malware dağıtımı olduğuna dair güçlü kanıt bulunmayan; ancak güvenlik, görünürlük ve ürün güveni açısından ciddiye alınması gereken bir kaynak kod sızıntısı olayıdır.

Son söz

Eğer ekibiniz Claude Code kullanıyorsa, bu olaydan çıkarılacak en doğru refleks korkup aracı tamamen çöpe atmak değil. Daha iyi refleks, kurulum yolunu netleştirmek, deprecated npm kullanımını azaltmak, ajan araçlarını daha sıkı izin ve izolasyon politikalarıyla çalıştırmak ve yayın artefact'larına karşı daha disiplinli davranmaktır.

Gelecekte geliştirici araçlarının güvenliği, yalnızca "hangi model daha iyi kod yazıyor" sorusuyla değil, "hangi dağıtım zinciri daha öngörülebilir ve daha kontrollü" sorusuyla da belirlenecek.