npm en riskli güvenlik sorunlarıyla karşı karşıya

kapanış bildirimi

Bu makale İngilizce olarak da mevcuttur. Teknik yardımla tercüme edildi ve yayınlanmadan önce editoryal olarak gözden geçirildi.

Npm v12 ile GitHub, güvenlik açısından kritik olan birçok Node.js paket yöneticisi varsayılanını ortadan kaldırıyor. Temmuz 2026 için duyurulan ana sürümde artık kurulum komut dosyaları bağımlılıklardan otomatik olarak çalıştırılmayacak. npm ayrıca Git'i ve uzak bağımlılıkları yalnızca geliştiricilerin bunları açıkça yayınlaması durumunda yükler. Bu GitHub ile yazılım tedarik zincirindeki en önemli saldırı yollarından birini kapatmak istiyor: bir saldırı sırasında kodun otomatik olarak yürütülmesi. npm install.

Duyurudan sonra devamını okuyun

npm, Node.js ekosisteminin varsayılan paket yöneticisidir ve en çok kullanılan paket yöneticilerinden biridir. Modern uygulamalar genellikle yüzlerce veya binlerce doğrudan ve dolaylı bağımlılığa sahiptir. Saldırı yüzeyi buna uygun olarak büyüktür. Güvenlik araştırmacıları, kötü amaçlı kodların benimsenen paketler, çalınan bakım hesapları veya manipüle edilmiş kurulum komut dosyaları aracılığıyla geliştirme ortamlarına girdiği tedarik zinciri saldırıları konusunda yıllardır uyarıda bulunuyor. Özellikle tehlikeli olan, bir paket yüklendiğinde, genellikle geliştiriciler uygulamayı başlatmadan önce kodu çalıştıran mekanizmalardır.

Npm v12'nin en önemli yeniliği tam da burada devreye giriyor. Şu andan itibaren paket yöneticisi artık varsayılan olarak bağımlılıklardan kurulum komut dosyalarını çalıştırmayacaktır. Bu, yaşam döngüsü komut dosyalarını etkiler preinstall, install VE postinstall. Npm'nin daha önce otomatik olarak kullandığı yerel uzantılar bile node-gyp derlendiğinde, paket yöneticisi artık yayınlanmadan derlenmeyecektir. Aynı şey bazıları için de geçerli prepare-Git'ten komut dosyaları, dosyalar veya bağlantılı bağımlılıklar.

Buraya kadar basit bir tane yeterli npm installbu komut dosyalarını otomatik olarak çalıştırmak için. Çoğu paket, mekanizmayı ek ikili dosyalar indirmek veya yerel bileşenleri derlemek gibi meşru amaçlarla kullanır. Ancak yıllardır aynı işlev ilginç bir saldırı yolu olarak değerlendirildi: değiştirilmiş bir kurulum komut dosyası aracılığıyla kurulum sırasında kötü amaçlı kod yürütmek mümkündür. Kod, örneğin çevresel değişkenleri okuyabilir, oturum açma verilerine erişebilir veya ek kötü amaçlı yazılım yükleyebilir.

Otomatik çalıştırmanın yerini sürüm listesi içeren bir şablon alır. Gelecekte geliştiriciler, kurulum komut dosyalarının hangi paketleri çalıştırabileceğini kendileri belirleyecekler. npm bu sürümleri projede saklar, böylece ekipler bunları kaynak koduyla birlikte sürümlendirebilir.

Geçişi erken yapmak istiyorsanız bunu zaten yapabilirsiniz: npm 11.16.0, paket yöneticisinin gelecekte engelleyeceği komut dosyaları hakkında zaten uyarıda bulunuyor. Komut ile npm approve-scripts --allow-scripts-pending hangi bağımlılıkların etkileneceğini kontrol edebilirsiniz; ile npm approve-scripts Güvenilir paketler daha sonra yayınlanabilir.

Duyurudan sonra devamını okuyun

npm aynı zamanda Git bağımlılıklarını yönetme konusunda da dizginleri sıkılaştırıyor. Gelecekte paket yöneticisi doğrudan Git deposundan gelen paketleri varsayılan olarak engelleyecektir; Geliştiricilerin bu tür kaynaklara açıkça izin vermesi gerekir. GitHub, kurulum komut dosyaları etkili bir şekilde bastırılmış olsa bile, Git bağımlılığından kod yürütmek için kullanılabilecek bir saldırı rotasıyla bu hareketi haklı çıkarıyor. Ayrıca Git bağımlılıklarını kontrol etmek genellikle normal npm kayıt defteri paketlerine göre daha zordur.

Benzer bir engel gelecekte uzak bağımlılıklar için de geçerli olacaktır; örneğin doğrudan bir URL'den gelen paketler için, örneğin HTTPS aracılığıyla bir TAR arşivi olarak. Ayrıca Npm bunu yalnızca açık onay alındıktan sonra kurar. Bu tür bağımlılıklar olağan kayıt defteri altyapısını atlar ve kökenlerinin izlenmesini zorlaştırır. GitHub, dış kaynakların fark edilmeden bağımlılık zincirine girmesini önlemek istiyor.

Daha fazla güvenlik, başlangıçta geliştiriciler ve şirketler için daha fazla çaba anlamına gelir. Daha önce kurulum komut dosyalarına, Git bağımlılıklarına veya harici paket kaynaklarına güvenen herkesin derleme ve CI/CD işlemlerini kontrol etmesi ve gerekli bileşenleri yayınlaması gerekir. GitHub, derhal npm 11.16.0 veya sonraki bir sürüme geçilmesini ve verilen uyarıların değerlendirilmesini önerir.

Ancak npm v12, JavaScript tedarik zincirindeki tüm sorunları çözmez. Doğrudan bir paketin uygulama koduna yerleştirilmiş kötü amaçlı kod, sistemlere ulaşmaya devam ediyor. Yeni yaklaşım aynı zamanda güvenliği ihlal edilmiş bakımcı hesaplarını, yazım hatalarını veya savunmasız kitaplıkları da tespit etmiyor. Ancak bu muhtemelen son yıllarda imar ve inşaat ortamlarının güvenliğine yönelik en geniş kapsamlı değişikliklerden biri olacaktır.

GitHub daha fazla ayrıntı sağlar: Npm v12 için yaklaşan son değişikliklerle ilgili değişiklik günlüğü girişi.


(fo)


Yayımlandı

kategorisi

yazarı:

Etiketler:

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir