npm 12 ile supply chain saldırılarına karşı yeni güvenlik önlemi geliyor

Posted on 14 Haz 2026

arkadaşlar, npm’den güzel bir haber var. npm 12 ile birlikte paket yöneticisi, bağımlılıklardan gelen scriptleri otomatik çalıştırmayı durduracak. yani artık npm install dediğinizde her paket istediği gibi script çalıştıramayacak. bu supply chain saldırıları için ciddi bir önlem.

olay ne?

şöyle ki, şu an npm install dediğinizde, paketler preinstall, postinstall gibi scriptler çalıştırabiliyor. kötü niyetli birisi paketine zararlı bir script koyarsa, siz hiç farkında olmadan o script çalışıyor. klasik supply chain attack yöntemi işte.

npm 12 ile birlikte bu davranış değişiyor:

  • varsayılan olarak bağımlılıkların scriptleri çalışmayacak
  • sadece açıkça izin verdiğiniz paketlerin scriptleri çalışacak
  • kendi projenizin scriptleri normal çalışmaya devam edecek

neden önemli bu?

son yıllarda supply chain saldırıları çok arttı. saldırganlar popüler paketleri ele geçiriyor veya typosquatting yapıyor, içine zararlı script koyuyor. siz masum masum npm install diyorsunuz, arka planda:

  • kripto madencisi çalışıyor
  • environment variable’larınız çalınıyor (AWS key’leri falan)
  • backdoor kuruluyor
  • ransomware indiriliyor

spoiler: bu değişiklik geriye dönük uyumluluk sorunları yaratabilir, bazı paketler çalışmayabilir.

etkilenen sistemler

DurumAçıklama
✅ npm 12 ve sonrasıYeni güvenlik davranışı aktif
⚠️ npm 11 ve öncesiEski davranış devam ediyor
🔄 Mevcut projelerBazı bağımlılıklar izin gerektirebilir

ne yapmalısınız?

npm 12 çıktığında

# npm'i güncelle
npm install -g npm@12

# projenizde test edin
cd /path/to/project
npm install

# eğer bazı paketler script çalıştırmak istiyorsa uyarı alacaksınız
# güvendiğiniz paketlere izin vermek için:
npm config set allow-scripts "paket-adi,baska-paket"

# veya .npmrc dosyasına ekleyin:
echo "allow-scripts=paket-adi,baska-paket" >> .npmrc

şimdiden hazırlık

# hangi paketlerin script çalıştırdığını görmek için:
npm ls --parseable | while read dir; do
  if [ -f "$dir/package.json" ]; then
    grep -l "preinstall\|postinstall\|install" "$dir/package.json" && echo "$dir"
  fi
done

# projenizin bağımlılıklarını gözden geçirin
npm audit

# gereksiz bağımlılıkları temizleyin
npm prune

geçiş süreci nasıl olacak?

npm ekibi şöyle bir yol haritası çizmiş:

  1. npm 12 beta: yeni davranış opsiyonel olarak test edilebilecek
  2. npm 12 stable: varsayılan olarak aktif olacak ama kolay bypass var
  3. ileride: daha sıkı kontroller gelecek

edit: bu değişiklik breaking change sayılıyor, o yüzden major versiyon artışı var (12).

dikkat edilmesi gerekenler

ci/cd pipeline’larınızı kontrol edin:

  • bazı paketler build sırasında native modül derliyor (node-gyp kullanan paketler)
  • bu paketlere izin vermeniz gerekebilir
  • yoksa build’ler patlayabilir

örnekler:

  • node-sass → native modül derler, script gerekir
  • puppeteer → chromium indirir, script gerekir
  • electron → binary indirir, script gerekir

güvenlik açısından:

  • sadece gerçekten güvendiğiniz paketlere izin verin
  • npm registry’de verified publisher badge’i olanlara öncelik verin
  • paket sayısını minimumda tutun
  • düzenli npm audit çalıştırın
# izin verdiğiniz paketleri listeleyin
npm config get allow-scripts

# belirli bir paketi kaldırın
npm config delete allow-scripts

alternatif yaklaşımlar

eğer daha paranoyaksanız:

pnpm kullanın:

# pnpm zaten daha güvenli bir izolasyon sağlıyor
npm install -g pnpm
pnpm install

yarn kullanın:

# yarn 2+ da benzer güvenlik özellikleri var
npm install -g yarn
yarn install

ignore-scripts kullanın (şimdiden):

# hiçbir script çalıştırma
npm install --ignore-scripts

# sonra sadece kendi scriptlerinizi çalıştırın
npm rebuild

topluluk tepkileri

npm topluluğu genel olarak bu değişikliği olumlu karşılıyor ama:

  • ✅ güvenlik artıyor
  • ✅ supply chain saldırıları zorlaşıyor
  • ⚠️ bazı paketler çalışmayabilir
  • ⚠️ developer experience biraz bozulabilir
  • ❌ eski projelerde sorun çıkabilir

bkz: leftpad olayı, event-stream hack’i, ua-parser-js saldırısı

sonuç

agalar, bu npm 12 güncellemesi supply chain güvenliği için önemli bir adım. evet, biraz can sıkıcı olabilir, bazı paketlere manuel izin vermek gerekecek ama güvenlik için küçük bir bedel.

yapmanız gerekenler:

  1. npm 12 çıktığında hemen test edin
  2. hangi paketlerin script çalıştırdığını tespit edin
  3. sadece güvendiğiniz paketlere izin verin
  4. ci/cd pipeline’larınızı güncelleyin
  5. ekibinizi bilgilendirin

dikkat: npm 12 henüz çıkmadı, ama çıktığında hazırlıklı olun. beta versiyonları deneyebilirsiniz.

kaynaklar


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