npm v12 Güvenlik Devrimi: Install Script’leri, Git ve Remote Bağımlılıklar Varsayılan Olarak Engellenecek
github, 9 Haziran 2026’da npm v12’nin Temmuz 2026’da yayınlanmasıyla birlikte üç güvenlik varsayılanının opt-in’e çevrileceğini duyurdu. Install lifecycle script’leri (implicit node-gyp build’leri dahil), Git URL bağımlılıkları ve remote URL/tarball bağımlılıkları artık varsayılan olarak engellenecek. Değişiklik, miasma-worm gibi supply chain saldırılarına doğrudan yanıt niteliğinde.
Ana Gelişme
Üç breaking change:
| Ayar | Mevcut Varsayılan | v12 Varsayılanı |
|---|---|---|
allowScripts | açık (11.16+‘da advisory) | kapalı |
--allow-git | izinli | yok |
--allow-remote | izinli | yok |
binding.gyp içeren paketlerdeki implicit node-gyp rebuild işlemleri de engellenecek. Git/file/link bağımlılıklarından gelen prepare script’leri aynı şekilde kısıtlanacak.
Hazırlık için geliştiriciler npm 11.16.0+‘a yükseltebilir; advisory uyarıları şimdiden aktif. Yeni npm approve-scripts komutu, package.json’da allowlist oluşturmayı kolaylaştırıyor.
Neden Önemli?
Install-time lifecycle script’leri, npm ekosistemindeki “en büyük kod çalıştırma yüzeyi” olarak tanımlanıyor (npm maintainer Leo Balter). miasma-worm, preinstall hook’larıyla 4,2 MB obfuscated Bun payload’ı çalıştırdı — geçerli SLSA provenance’a sahip kötü amaçlı paketler bile tespit edilemedi.
npm, artık install script’lerini varsayılan olarak çalıştıran tek büyük paket yöneticisi. pnpm v10+, Yarn Berry, Bun ve Deno hepsi bunları engelliyor.
agentjacking haberindeki MCP güven zinciri eleştirisiyle paralel: “implicit trust → explicit permission” paradigma değişimi hem npm hem AI agent güvenliğinde aynı anda yaşanıyor.
Teknik Detaylar
Migration Checklist
- npm 11.16.0+‘a yükseltin
npm installçalıştırın — advisory uyarılarını inceleyinnpm approve-scripts --allow-scripts-pending— onaylanmamış script’leri listeleyinnpm approve-scripts <package>veya--allile allowlist oluşturun- Güncellenmiş
package.json’dakiallowScriptsalanını commit edin - Gereksiz paketler için
npm deny-scriptskullanın .npmrc’dekiignore-scripts=trueayarını kaldırın (allowScripts’i override eder)
Native modül kullanan projeler (sharp, bcrypt gibi) özellikle etkilenecek — bu paketlerin script’leri allowlist’e eklenmeli.
Ortalama bir JavaScript projesi 79 transitive bağımlılığa sahip; migration planlaması erken başlamalı.
Bağlam
Mayıs 2026’da Microsoft namespace’ine yönelik Axios tabanlı supply chain saldırıları da bu değişikliğin aciliyetini artırdı. github-security ve supply-chain-attacks alanında npm v12, en kapsamlı politika değişikliği olarak öne çıkıyor.
devtools ekosisteminde Türk geliştiriciler için Temmuz 2026 öncesi hazırlık penceresi kritik.
Sonraki Adımlar
npm v12 release candidate takvimini izleyin. CI/CD pipeline’larında npm approve-scripts workflow’unu test edin. Native modül bağımlılıklarınızı envanterleyin.
Malware, install script vektöründen modül body execution’a kayabilir — geliştirici topluluğundaki şüphecilik haklı; ancak en büyük saldırı yüzeyinin kapatılması önemli bir adım.
Türk Geliştiriciler İçin
Türkiye’deki JavaScript ekosistemi hızla büyüyor; npm, en yaygın paket yöneticisi. Temmuz 2026 öncesi hazırlık için:
- CI/CD pipeline’larınızda
npm approve-scriptsworkflow’unu test edin - Monorepo projelerinde transitive bağımlılık envanteri çıkarın
- Native modül kullanan projelerde (sharp, bcrypt, sqlite3) allowlist planı hazırlayın
javascript ve nodejs topluluğunda bu değişiklik, yıllardır süren “install script’ler güvenli mi?” tartışmasına resmi bir yanıt veriyor. cybersecurity ekipleri, dependency audit süreçlerini npm v12’ye göre güncellemeli.