npm'de kötü niyetli paketler install script savunmasını atlatıyor
arkadaşlar, npm ekosisteminde yeni bir kötü amaçlı kampanya var ve bu sefer işler biraz farklı. ‘indexed-btree’ adlı bir paket üzerinden yürütülen bu saldırıda, kötü niyetli tipler klasik install script yöntemini değil, paketin normal çalışma zamanı davranışını kullanarak güvenlik önlemlerini atlıyorlar. yani artık sadece npm install sırasında değil, paket çalıştığında da dikkatli olmanız gerekiyor.
ne oluyor yani?
şöyle ki agalar, normalde npm’deki kötü amaçlı paketler genelde install scriptleri içinde zararlı kod çalıştırırlardı. siz npm install dediğinizde hop, arka planda bi şeyler dönüyordu. ama artık güvenlik araçları bu install scriptlerine çok dikkat ediyor, o yüzden saldırganlar yeni bir yöntem bulmuş: zararlı kodu paketin normal çalışma zamanına gizlemek.
indexed-btree paketi bir b-tree veri yapısı kütüphanesi gibi görünüyor ama içinde gizli kötü niyetli kod var. paket kurulduğunda değil, uygulamanız içinde çalıştığında harekete geçiyor. bu da çoğu güvenlik aracının radarının altından geçmesini sağlıyor.
spoiler: bu tür saldırılar artık yaygınlaşabilir çünkü mevcut savunma mekanizmalarını bypass ediyorlar.
tehlike nerede?
- runtime execution: zararlı kod install sırasında değil, paketin normal kullanımı sırasında çalışıyor
- gizlenme: klasik install script taramaları bu tür tehditleri yakalayamıyor
- supply chain attack: güvenilir gibi görünen paketler aslında zararlı olabiliyor
- sürekli tehdit: bir kere kuruldu mu, uygulamanız her çalıştığında aktif oluyor
kimler etkileniyor?
| Sistem/Platform | Durum |
|---|---|
| Node.js projeleri | ✅ Etkileniyor |
| npm kullanan projeler | ✅ Etkileniyor |
| indexed-btree paketi kullananlar | ✅ Doğrudan etkileniyor |
| yarn/pnpm kullananlar | ✅ Etkileniyor |
şimdi ne yapacaksınız?
1. indexed-btree paketini kontrol edin
# projenizde bu paket var mı bakalım
npm list indexed-btree
# veya package.json'da arayın
grep -r "indexed-btree" package*.json
# yarn kullananlar için
yarn why indexed-btree
2. dependency’leri tarayın
# npm audit çalıştırın (her ne kadar bu tür saldırıları yakalayamasa da)
npm audit
# daha detaylı tarama için socket.dev gibi araçlar kullanın
npx socket npm audit
# veya snyk ile tarayın
npx snyk test
3. şüpheli paketleri kaldırın
# indexed-btree varsa hemen silin
npm uninstall indexed-btree
# package-lock.json'ı güncelleyin
npm install
# node_modules'ı temizleyip baştan kurun
rm -rf node_modules package-lock.json
npm install
4. lockfile’ları kontrol altında tutun
# package-lock.json veya yarn.lock'u git'e ekleyin
git add package-lock.json
git commit -m "lock dependency versions"
# lockfile değişikliklerini gözden geçirin
git diff package-lock.json
önleyici tedbirler
runtime davranışlarını izleyin:
- paketlerin çalışma zamanında ne yaptığını monitör edin
- beklenmedik network çağrıları, dosya erişimleri vb. için alarm kurun
- process monitoring araçları kullanın (sysdig, falco gibi)
dependency yönetimi:
# sadece güvenilir kaynaklardan paket kurun
npm config set registry https://registry.npmjs.org/
# paket kurulumunda script çalıştırmayı devre dışı bırakın
npm install --ignore-scripts
# sonrasında güvenli olanları manuel çalıştırın
npm rebuild
güvenlik araçları:
- socket.dev kullanarak gerçek zamanlı tehdit tespiti yapın
- snyk veya dependabot ile sürekli tarama aktif tutun
- npm audit’i CI/CD pipeline’ınıza ekleyin
- lockfile değişikliklerini otomatik gözden geçirin
kod inceleme:
# yeni eklenen paketlerin kodunu manuel inceleyin
cd node_modules/şüpheli-paket
cat index.js
# paket boyutunu kontrol edin (çok büyükse şüpheli)
du -sh node_modules/şüpheli-paket
# paket içeriğini listeleyin
npm pack şüpheli-paket --dry-run
dikkat edilmesi gerekenler
edit: bu tür saldırılar sadece npm’de değil, pypi, rubygems gibi diğer paket yöneticilerinde de görülüyor. her platformda dikkatli olun.
önemli: artık install scriptlerine bakmak yetmiyor. paketin runtime davranışını da izlemeniz lazım. bu işi zorlaştırıyor ama mecburuz.
şunları mutlaka yapın:
- dependency’lerinizi minimize edin (gereksiz paket kullanmayın)
- lockfile’ları version control’de tutun
- güvenlik taramalarını otomatikleştirin
- runtime monitoring kurun
- paket güncellemelerini körü körüne yapmayın, changelog’a bakın
yapmamanız gerekenler:
- bilinmeyen, az kullanılan paketleri rastgele kurmayın
- paket isimlerindeki typo’lara dikkat edin (typosquatting)
- lockfile’ları silip “temiz kurulum” yapmayın sürekli
- güvenlik uyarılarını görmezden gelmeyin
kaynaklar
- BleepingComputer - Orijinal Haber
- npm Security Best Practices
- Socket.dev - Supply Chain Security
- OWASP - Software Component Verification Standard
sonuç olarak: arkadaşlar, npm ekosisteminde işler değişiyor. artık sadece install sırasında değil, runtime’da da dikkatli olmanız gerekiyor. dependency’lerinizi minimize edin, güvenlik araçlarını aktif tutun ve şüpheli paketlerden uzak durun.
indexed-btree paketini kullananlar varsa hemen kaldırsın. genel olarak da az bilinen, garip isimli paketlerden uzak durun. büyük projelerin dependency’si olan, topluluk tarafından aktif kullanılan paketleri tercih edin.
yedek almadan, test etmeden production’a bir şey atmayın. sonra ağlarsınız.
Bu içerik yapay zeka tarafından oluşturulmuştur.
