npm 12 ile Sıfır Güven: Varsayılan Olarak Yükleme Betikleri Devre Dışı, Tedarik Zinciri Riskine Karşı Büyük Adım Siber Güvenlik

npm 12 ile Sıfır Güven: Varsayılan Olarak Yükleme Betikleri Devre Dışı, Tedarik Zinciri Riskine Karşı Büyük Adım

GitHub, npm 12'de varsayılan olarak yükleme betiklerini devre dışı bıraktı. Ayrıca, 2FA atlama tokenleri kısıtlanıyor. Bu değişiklikler, yazılım tedar

GitHub, popüler paket yöneticisi npm'in 12. sürümünü yayınladı. Bu sürümle birlikte, yükleme betikleri (install scripts) varsayılan olarak devre dışı bırakıldı. Ayrıca, iki faktörlü kimlik doğrulamayı (2FA) atlamak için kullanılan Granüler Erişim Tokenleri (GATs) kademeli olarak kullanımdan kaldırılıyor. Bu değişiklikler, yazılım tedarik zinciri saldırılarına karşı önemli bir güvenlik adımı olarak değerlendiriliyor.

npm 12 ile birlikte, daha önce otomatik olarak çalışan bazı yükleme davranışları isteğe bağlı hale getirildi. allowScripts varsayılan olarak kapalı: yani bağımlılıkların yaşam döngüsü betikleri (preinstall, install, postinstall) ve örtülü node-gyp derlemeleri, açıkça izin verilmedikçe çalışmayacak. --allow-git varsayılan olarak 'none' oldu: Git bağımlılıkları (doğrudan veya dolaylı) açıkça izin verilmedikçe çözülmeyecek. --allow-remote varsayılan olarak 'none': uzak URL'lerden (örneğin https tarball'ları) gelen bağımlılıklar açıkça izin verilmedikçe çözülmeyecek.

Kullanıcılar, güvenilir betikleri incelemek ve onaylamak için 'npm approve-scripts --allow-scripts-pending' komutunu çalıştırmalı ve ardından ortaya çıkan izin listesini package.json dosyasına eklemelidir. Bu değişiklikler, geçen ay önizlenmişti ve GitHub, geliştiricilere npm 11.16.0 veya daha yenisine yükseltmelerini, normal yükleme komutunu çalıştırmalarını ve görüntülenen uyarıları incelemelerini önermişti.

Nasıl Önlem Alınmalı?

npm 12 ile gelen bir diğer önemli değişiklik ise Granüler Erişim Tokenleri (GATs) ile ilgili. 2FA'yı atlamak için yapılandırılan npm GAT'ları, artık hassas hesap, paket ve organizasyon yönetimi işlemlerini gerçekleştiremeyecek. Bu işlemler arasında token oluşturma/silme, kurtarma kodları oluşturma, npm hesap şifresi/e-posta/profil/2FA yapılandırmasını değiştirme, paket erişimini/bakımcılarını/güvenilir yayınlama yapılandırmasını değiştirme, organizasyon ve ekip üyeliği ile paket izinlerini yönetme yer alıyor.

Ayrıca, npm GAT'ları doğrudan yayınlama yeteneğini kaybedecek. Yayınlama yüzeyleri, yalnızca özel paketleri okuma ve bir yayınlama aşamasına getirme ile sınırlı olacak; paket, ancak insan 2FA onayından sonra herkese açık hale gelecek. İlk değişikliğin Ağustos 2026 başında yürürlüğe girmesi bekleniyor. Bu süre zarfında, yukarıda belirtilen işlemler için 2FA atlama tokenleri kullanmayı bırakmanız ve bu işlemleri 2FA ile etkileşimli olarak gerçekleştirmeniz öneriliyor. İkinci değişiklik ise Ocak 2027'de planlanıyor.

Teknik Analiz

GitHub, hazırlık olarak, otomatik yayınlamayı güvenilir yayınlama (OIDC) veya insan onay adımı içeren aşamalı yayınlamaya taşımayı, uzun ömürlü yayın tokenleri kullanmamayı öneriyor. Bu gelişmeler, pnpm 11.10'un '_auth' ayarını tek bir yapılandırılmış, URL anahtarlı değer olarak kullanıma sunmasıyla birlikte geliyor. Socket'in açıklamasına göre, 'Güvenlik faydası, kimlik bilgisinin ve ait olduğu sunucunun birlikte hareket etmesi ve pnpm'in _auth'ı yalnızca ortam veya genel yapılandırmadan okuması, asla bir projenin dosyalarından okumamasıdır.'

Bu, kötü niyetli veya ele geçirilmiş bir pnpm-workspace.yaml veya .npmrc dosyasının geçerli bir tokeni farklı bir sunucuya yönlendiremeyeceği anlamına geliyor. Kurcalanmış bir proje dosyası, saldırganların sıklıkla ayak bastığı bir yöntemdir ve bir kayıt defteri tokenini yönlendirmek, onu çalmanın doğrudan bir yoludur. Bu yolun kapatılması, maruziyeti ortadan kaldırır. Bu yenilikler, yazılım tedarik zinciri güvenliğinde önemli bir dönüm noktası olarak görülüyor ve geliştiricilerin en kısa sürede bu güncellemelere uyum sağlaması öneriliyor.

Kaynak: thehackernews.com

Paylaş: