npm'de yeni oyun: malware runtime'da gizleniyor, kurulum scripti savunması boş

Posted on 20 Eyl 2026

arkadaşlar, npm paketlerinde yeni bir taktik ortaya çıktı ve bu sefer çocuk oyuncağı değil. threat actor’lar artık kurulum sırasında kötülük yapmıyor, paket yüklenip çalışmaya başladığında devreye giriyor. yani sizin güvenlik kontrolleri boş kalıyor, klasik.

ne olmuş yani?

npm ekosisteminde “indexed-btree” adında bir paket bulunmuş ve bu paket malware taşıyor. ama burada önemli olan şey: saldırganlar geleneksel install-script defenses’ini atlatmış. kısacası, paket yüklenirken hiçbir şüpheli şey olmuyor, ama çalışmaya başladığında boom, kötü şeyler başlıyor.

spoiler: bu çok tehlikeli bir yaklaşım çünkü çoğu güvenlik aracı kurulum aşamasında kodu tarayıyor. runtime davranışını yakalamak ise çok daha zor.

nasıl çalışıyor bu taktik?

  1. paket normal görünüyor: indexed-btree adında bir paket npm’de yayınlanıyor, dependency olarak kullanılabiliyor
  2. kurulum sırasında temiz: install script’ler hiçbir şüpheli şey yapmıyor, güvenlik araçları geçiyor
  3. runtime’da saldırı başlıyor: paket çalışmaya başladığında, paketiniz gerçek amaçlarını ortaya koyuyor
    • veri sızdırma
    • arka kapı açma
    • diğer malware indirme
    • crypto mining

bu taktik çok zekice çünkü:

  • npm audit çoğu zaman geçiyor
  • dependency scanning araçları fark etmiyor
  • static code analysis boş kalıyor
  • sadece runtime behavior’ı analiz eden sistemler yakalayabiliyor

etkilenen sistemler

SistemDurumAçıklama
npm Paketleri🔴 KritikTüm npm paketleri bu taktikten etkilenebilir
Node.js Uygulamaları🔴 Kritikindexed-btree kullanan projeler direkt risk altında
CI/CD Pipelines🟠 YüksekGüvenlik kontrolleri bypass edilebiliyor
Güvenlik Araçları🟠 YüksekGeleneksel araçlar runtime saldırısını kaçırıyor

yapmanız gerekenler (acil)

1. indexed-btree’yi kontrol edin

# projelerinizde indexed-btree var mı bakın
npm ls indexed-btree

# eğer varsa hemen kaldırın
npm uninstall indexed-btree

# package-lock.json'ı da temizleyin
rm package-lock.json
npm install

2. dependency’lerinizi gözden geçirin

# tüm paketleri listeleyin
npm ls

# şüpheli paketleri kontrol edin
# özellikle az indirilen, yeni eklenen paketlere dikkat edin

3. npm audit çalıştırın (ama yeterli değil)

npm audit
npm audit fix

# ama dikkat: npm audit bu runtime taktiklerini her zaman bulmuyor!

4. runtime monitoring ekleyin

# daha gelişmiş çözümler için:
# - npm trends kontrol edin (indirme sayısı anormal mı?)
# - paket maintainer'ı araştırın (kim, kaç yıldır aktif?)
# - source code'u inceleyin (github'da var mı?)
# - SBOM (Software Bill of Materials) kullanın

geçici çözümler (eğer hemen kaldıramıyorsanız)

dikkat: bu çözümler geçici, hemen kaldırmanız daha iyi.

  1. Network seviyesinde izleme: egress trafiği monitorlayın, suspicious connection’ları block edin
  2. Runtime behavior monitoring: Falco, Sysdig gibi araçlarla process davranışını izleyin
  3. Sandboxing: indexed-btree kullanan uygulamaları container’da çalıştırın, sınırlı permission’larla
  4. Log everything: tüm npm işlemlerini log’layın, anomali detection yapın

neden bu kadar tehlikeli?

arkadaşlar, bu taktik supply chain saldırılarının evrimini gösteriyor:

  • eski taktik: kurulum sırasında kötülük yap → kolay yakalanır
  • yeni taktik: runtime’da gizli gizli çalış → güvenlik araçları boş kalır

npm ekosistemi açık kaynak, herkes paket yayınlayabiliyor. bu da demek oluyor ki:

  • malicious paket yayınlamak kolay
  • yakalanmak zor (runtime saldırısıysa)
  • kullanıcılar güvensiz paketleri bağımlılık olarak yüklüyor

edit: önemli notlar

  • indexed-btree bu haber yazısından sonra kaldırılmış olabilir, ama teknik aynı kalıyor
  • npm’nin yeni güvenlik özellikleri var (attestation, signing) ama henüz yaygın değil
  • bkz: supply chain attacks, typosquatting, dependency confusion

spoiler: bu sorun büyüyecek

runtime-based malware’i yakalamak kurulum-script malware’ini yakalamaktan çok daha zor. bu yüzden:

  1. dependency sayısını azaltın: kullandığınız paket sayısı ne kadar az olursa, risk o kadar düşük
  2. paketleri araştırın: npm trends, github stars, maintainer reputation kontrol edin
  3. kendi paketlerinizi yazın: critical kısımlar için external dependency yerine internal kod yazın
  4. monitoring ekleyin: production’da runtime davranışını izleyin

kaynaklar


Bu içerik yapay zeka tarafından oluşturulmuştur.