Aynı npm saldırısını beş ülkenin kaynağından okudum — beş ayrı hikâye çıktı
keyv olayını önce ABD kaynaklarından okudum, sonra aynı olay ailesini Çin, Rus, Fransız ve İsrail kaynaklarında aradım. Aynı olay değil, aynı olaya sorulan dört ayrı soru çıktı.
Bu yazının İngilizcesi: English version.
Yazdığım şeylerin çoğu, bir paket yöneticisinin indirdiği kodun üstünde duruyor. Tedarik zinciri saldırıları bu yüzden "sektör haberi" değil: npm install yazan herkes için, doğrudan kendi makinesinde çalışacak kod meselesi.
Ağustosta keyv düştüğünde haberi okudum, paketlerimi kontrol ettim, geçtim. Sonra fark ettim ki okuduğum her şey tek bir yerden geliyordu: ABD merkezli güvenlik şirketlerinin blogları. Kendi kendime sordum, aynı olayı Çin'de, Rusya'da, Fransa'da, İsrail'de kim nasıl yazıyor?
Oturup baktım. Beklediğim şey "aynı haber, farklı dil" idi. Çıkan şey o değildi.
ABD: saatine kadar adli zaman çizelgesi
Wiz'in keyv analizi olayı saat saat yazıyor. 4 Ağustos 2026, 09:00 UTC'de saldırgan ele geçirdiği bakıcı hesabıyla zararlı sürümü yayımlıyor; 13:45'te ilk bulgular yayımlanıyor; 15:00'te C2 adreslerinin bir Ethereum akıllı sözleşmesinden eth_call ile çekildiği tespit ediliyor; 19:50'de yük ayrıntısı çıkıyor. Etkilenen paket sayısı 400'ün üzerinde.
Yükün ne topladığı listesi bence olayın en önemli kısmı: bulut kimlik bilgileri, geliştirici kimlik bilgileri, kripto cüzdanları, CI/CD sırları, /etc/shadow — ve yapay zekâ yapılandırma dosyaları: Claude, OpenAI, Codex, Cursor, Gemini.
Bu liste bir yıl önce böyle değildi. Saldırgan artık geliştiricinin makinesinde ajan kimlik bilgilerinin durduğunu biliyor.
ABD kaynaklarının güçlü olduğu yer bu: mekanik. Nasıl girdi, ne yaptı, nereye bağlandı, hangi IoC. Zayıf olduğu yer de aynı yerden çıkıyor — olay bittiğinde yazı da bitiyor.
Çin: olay değil, sistem arızası
Aynı ailenin daha eski bir halkası olan axios zehirlenmesi için 安全内参'daki analiz (31 Mart 2026) farklı bir yerden tutuyor. Teknik kısım aynı: axios@1.14.1 ve eski dalda axios@0.30.4, sahte bir bağımlılık (plain-crypto-js@4.2.1), postinstall ile inen ve macOS/Windows/Linux için ayrı yükleri olan bir uzaktan erişim truva atı, iş bitince kendini silen bir indirici.
Vurgu farkı burada başlıyor. Yazı saldırganın iki dala 18 saate yayılmış planlı dağıtımını ve anonim ProtonMail hesabı kullanımını öne çıkarıyor — yani beceriyi ve disiplini ölçüyor. Sonra olayı tek bir cümleye indiriyor: npm install = keyfi kod çalıştırma. Olayı bir kaza değil, açık kaynak yönetişimindeki tek-nokta-arıza riskinin doğal sonucu olarak sunuyor.
Bir de şu var, ve bunu yazarken şaşırdım: analiz isnat konusunda ısrarla temkinli. Dört motivasyon kategorisi sayıyor (ekonomik, casusluk, fidye, APT) ve hiçbirini seçmiyor. Devlet aktörü iması yok. Batı kaynaklarında bu ölçüde çekingen bir isnat bölümü nadiren görüyorum.
Rusya: tedarik zinciri, ulusal tehdit raporunun bir satırı
Rus tarafında npm saldırısı kendi başına haber değil. Positive Technologies'in yıllık tehdit derlemesinde npm olayları, Rus şirketlerine yönelen saldırı manzarasının içinde birer madde olarak geçiyor: Haziran 2025'te geliştirici hesapları ele geçirilip eslint tarafındaki paketlere Scavenger stealer sokulması, Eylül 2025'te kitlesel oltalamayla debug, chalk ve 16 kütüphanenin daha kompromize edilip pano hırsızı dağıtılması.
Raporun asıl derdi başka: kimin saldırdığı. En aktif gruplar olarak Thor, PhantomCore, Fluffy Wolf ve Cloud Atlas sayılıyor; Thor için 2024'te sıfır olan bildirim sayısı 2025'te 107. Ve birkaç yıllık aradan sonra sıfır-gün kullanımının geri döndüğü söyleniyor — Team46'nın bir Chrome açığını, GOFFEE'nin bir WinRAR açığını kullanması örnek veriliyor.
Yani soru "ekosistem neden bozuk" değil, "bize kim vuruyor ve neyle". Aynı olay, tamamen başka bir kaba konmuş.
Fransa: hikâye yok, tablo var
CERT-FR'nin 31 Ağustos 2026 tarihli haftalık bülteni anlatı kurmuyor. Bir tablo veriyor: CVE, ürün, CVSS, tür, sömürülüyor mu.
| CVE | Ürün | CVSS | Tür | Sömürülüyor |
|---|---|---|---|---|
| CVE-2026-82078 | PaperCut | 9.4 | Uzaktan kod çalıştırma | Evet |
| CVE-2026-18963 | Keycloak | 9.1 | Politika atlatma | Evet (PoC herkese açık) |
| CVE-2026-72899 | Metabase | 10.0 | SQL enjeksiyonu | Bilgi yok |
| CVE-2026-60004 | Gitea | 9.8 | Uzaktan kod çalıştırma | Evet |
Bu tabloyu okurken, haber okurken hissetmediğim şeyi hissettim: elinizdeki satırlardan biri kullandığınız bir aracı gösterdiği anda metin bir bilgi olmaktan çıkıyor, bir iş emrine dönüşüyor.
İsrail: saldırı yüzeyinin kendisi değişti
İsrail tarafı olayı bambaşka bir eksenden tutuyor. Zenity Labs, 6 Ağustos 2026'da Black Hat USA'de ajan tarayıcılarda tek tık gerektirmeyen bir açık sınıfı sundu: Claude in Chrome, Gemini in Chrome, Perplexity Comet, ChatGPT Atlas, Copilot Edge. Saldırı bazı durumlarda tarayıcıdan taşıp yerel geliştirici araçlarına ve iç servislere uzanabiliyor (CTech'in haberi).
Bunu npm yazısının içine koymamın sebebi şu: ABD analizindeki o yük listesi — Claude, Cursor, Codex yapılandırmalarını toplayan liste — ile İsrail araştırmasındaki yüzey aynı yüzey. Biri "saldırgan ajan kimlik bilgilerini çalıyor" diyor, diğeri "ajanın kendisi kandırılabiliyor" diyor. İki kaynağı yan yana koymadan bu bağlantıyı kurmak zor.
Beş kaynak, dört ayrı soru
Karşılaştırmayı yaptıktan sonra elimde kalan tablo şu:
| Kaynak | Sorduğu soru | En iyi olduğu yer | Tek başına okunursa eksik kalan |
|---|---|---|---|
| ABD | Nasıl çalıştı? | Zaman çizelgesi, IoC, yük analizi | Olay kapanınca ders de kapanıyor |
| Çin | Bu ekosistem hakkında ne söylüyor? | Sistemik çerçeve, isnat disiplini | Tek olayın operasyonel ayrıntısı |
| Rusya | Bize kim vuruyor? | Aktör takibi, bölgesel manzara | Küresel ekosistem tartışması |
| Fransa | Bugün neyi yamalayacağım? | Uygulanabilirlik | Neden'i hiç anlatmıyor |
| İsrail | Hangi yeni yüzeyi kendimiz açtık? | Ürün güvenliği araştırması | Vakanın kendisi |
Dikkat edin: bunların hiçbiri "daha doğru" değil. Dördü de aynı gerçeği anlatıyor, farklı sorulara cevap verdikleri için farklı görünüyorlar. Tek kaynaktan okumanın maliyeti de bu — yanlış bilgi almıyorsunuz, sadece hep aynı soruyu soruyorsunuz.
Bende neyi değiştirdi
Yazıyı bitirirken rahatsız edici bir şeyin farkına vardım: tipik bir geliştirici makinesinde npm install'ın çalıştığı yer ile ajan kimlik bilgilerinin durduğu yer aynı yerdir. Wiz'in yük listesindeki o beş satır tam olarak orayı hedefliyor.
Bundan sonra iki kural benimsedim, ikisi de bedava:
- Ajan kimlik bilgileri ile paket kurulumu aynı güven bölgesinde durmayacak. Bir bağımlılık kurulumu, ajan yapılandırmasını okuyabiliyorsa tedarik zinciri saldırısının kapsamı benim düşündüğümden geniş demektir.
- Haftalık okuma listesine CERT-FR bülteni girdi. Haber bana olayı anlatıyor; bülten bana sıramı veriyor. İkisi aynı şey değil.
Bir sonraki yazıda ikinci maddeyi açacağım: bülten formatının haber formatından neden daha kullanışlı olduğunu ve ABD tarafında bu yıl sessizce değişen yama zorunluluğunu.
Bu blogda reklam vermek ya da birlikte iş yapmak
MCALAB bağımsız bir stüdyo. Sponsorluk, çapraz tanıtım ya da bir iş birliği için:
ads@mcalab.com.trAyrıntılar: Reklam & iş birliği. Kullanıcı desteği için destek sayfası.