GitHub, popüler JavaScript paket yöneticisi npm'in 12. sürümünü resmen yayınladı. Bu yeni sürümle birlikte, yükleme kodları (install scripts) varsayılan olarak devre dışı bırakılıyor ve iki faktörlü kimlik doğrulamayı (2FA) atlamak için tasarlanan granüler erişim token'ları (GAT'ler) kullanımdan kaldırılıyor. Microsoft bünyesindeki şirket, bu değişikliklerin tedarik zinciri güvenliğini artırmayı hedeflediğini belirtiyor. Geçtiğimiz ay önizlemesi yapılan bu özellikler, geliştiricilerin artık daha dikkatli olmasını gerektiriyor.
npm 12 ile birlikte gelen en önemli değişiklik, yükleme kodlarının varsayılan olarak devre dışı olması. allowScripts ayarı artık varsayılan olarak 'kapalı' durumda. Bu, bağımlılık yaşam döngüsü kodlarının (preinstall, install, postinstall) ve örtülü node-gyp yapılarının artık otomatik olarak çalışmayacağı anlamına geliyor. Geliştiriciler, bu kodları çalıştırmak için açıkça izin vermek zorunda. Benzer şekilde, --allow-git ve --allow-remote ayarları da varsayılan olarak 'yok' (none) olarak ayarlandı. Git bağımlılıkları ve uzak URL'lerden gelen bağımlılıklar artık otomatik olarak çözülmüyor.
Güvenilir kodları incelemek ve onaylamak için geliştiricilerin 'npm approve-scripts --allow-scripts-pending' komutunu çalıştırması ve ardından ortaya çıkan izin listesini package.json dosyasına eklemesi gerekiyor. Bu, eskiden otomatik olarak çalışan kodların artık manuel olarak onaylanmasını sağlıyor. GitHub, geliştiricilere npm 11.16.0 veya daha yeni bir sürüme yükseltmelerini, normal yükleme komutunu çalıştırmalarını ve görüntülenen uyarıları incelemelerini öneriyor.
npm 12 ile birlikte 2FA'yı atlatan GAT'ler için de önemli kısıtlamalar getiriliyor. Artık bu token'lar hassas hesap, paket ve organizasyon yönetimi işlemlerini gerçekleştiremeyecek. Token oluşturma/silme, kurtarma kodu oluşturma, şifre değiştirme, e-posta güncelleme, profil değiştirme, 2FA yapılandırması değiştirme, paket erişimini değiştirme, bakımcıları değiştirme, güvenilir yayınlama yapılandırmasını değiştirme, organizasyon ve ekip üyeliğini yönetme gibi işlemler artık GAT'ler ile yapılamayacak. Ayrıca, bu token'lar doğrudan yayınlama yeteneğini de kaybedecek; yalnızca özel paketleri okuma ve yayın aşamasına getirme (staging) işlemlerinde kullanılabilecek. Bir paketin herkese açık hale gelmesi için insan onayı gerekecek.
Bu değişikliklerin ilk aşamasının Ağustos 2026 başında yürürlüğe girmesi bekleniyor. Geçiş sürecinde, geliştiricilerin yukarıda belirtilen işlemler için 2FA atlatma token'larını kullanmayı bırakmaları ve bu işlemleri 2FA ile etkileşimli olarak gerçekleştirmeleri öneriliyor. İkinci değişiklik ise Ocak 2027'de planlanmış durumda. GitHub, otomatik yayınlama işlemlerini güvenilir yayınlama (OIDC) veya insan onay adımı içeren aşamalı yayınlama (staged publishing) ile değiştirmeyi tavsiye ediyor.
Sistem Güvenliği
Bu gelişmeler, JavaScript ekosisteminde tedarik zinciri güvenliğine yönelik artan farkındalığın bir parçası. Son yıllarda yaşanan büyük çaplı saldırılar (örneğin event-stream olayı), paket yöneticilerinin güvenlik önlemlerini sıkılaştırmasına yol açtı. npm'in bu adımı, bağımlılık enjeksiyonu ve kötü amaçlı kod çalıştırma gibi saldırı vektörlerini önemli ölçüde azaltacak. Geliştiricilerin bu değişikliklere uyum sağlamak için mevcut iş akışlarını gözden geçirmeleri ve gerekli ayarlamaları yapmaları gerekiyor.
Öte yandan, rakip paket yöneticisi pnpm de 11.10 sürümüyle güvenlik odaklı bir yenilik getirdi. Yeni '_auth' ayarı, kayıt defteri kimlik doğrulamasını tek bir yapılandırılmış, URL anahtarlı değer olarak yapılandırmayı sağlıyor. Socket'in açıklamasına göre, bu ayarın güvenlik avantajı, kimlik bilgisi ve ait olduğu sunucunun birlikte taşınması ve pnpm'in '_auth' değerini yalnızca ortam değişkenlerinden veya global yapılandırmadan okuması, proje dosyalarından asla okumaması. Bu sayede, kötü niyetli bir pnpm-workspace.yaml veya .npmrc dosyası geçerli bir token'ı farklı bir sunucuya yönlendiremiyor. Saldırganların sıklıkla kullandığı bu yöntem, böylece etkisiz hale getirilmiş oluyor.
Detaylar ve Etkileri
Sonuç olarak, npm 12 ve pnpm 11.10 güncellemeleri, JavaScript geliştiricileri için güvenlik bilincini artıran önemli adımlar. Geliştiricilerin, bu değişiklikleri dikkatle incelemeleri, mevcut projelerini güncellemeleri ve özellikle otomatik yayınlama işlemlerinde yeni güvenlik politikalarına uyum sağlamaları kritik öneme sahip. Tedarik zinciri güvenliği, modern yazılım geliştirmenin vazgeçilmez bir parçası haline gelirken, bu tür güncellemeler ekosistemin daha güvenli olmasına katkıda bulunuyor.
Kaynak: thehackernews.com