Giriş
GitHub, npm v12’nin gelecek ay tanıtacağı güvenlik odaklı değişiklikleri duyurdu. Bu değişiklikler, ‘npm install’ komutunu hedef alan tedarik zinciri saldırılarını engellemeyi amaçlamaktadır.
Saldırı Nasıl Çalışıyor?
‘npm install’, bir projenin bağımlılıklarını indirmek ve yüklemek için kullanılan bir komuttur. Geliştiriciler, projeyi klonladıktan sonra, güncellemeleri çektikten sonra veya CI/CD süreçlerinde bu komutu çalıştırır; bu da saldırganlar için otomatik kod yürütme potansiyeli taşır.
Etkilenen Sistemler
Yeni yaklaşımda, npm install sırasında otomatik olarak tetiklenen kod yürütmelerinin ve kayıt dışı bağımlılık kaynaklarının açık onay gerektireceği belirtildi. GitHub’ın duyurduğu başlıca değişiklikler şunlardır:
- CVE-2023-XXXX: Versiyon 12 itibarıyla, npm install, bağımlılıklardan gelen preinstall, install veya postinstall betiklerini yalnızca açık onay ile çalıştıracak. Bu, node-gyp aracılığıyla tetiklenen yerel modül derlemeleri ve Git, yerel dosya ve bağlantılı bağımlılıklardan gelen prepare betikleri için de geçerli olacaktır.
- CVE-2023-YYYY: npm install, doğrudan veya dolaylı olarak Git depolarından bağımlılıkları çekmeyecek, yalnızca açık izin verilirse bu gerçekleşecektir. Bu, bir Git bağımlılığının .npmrc dosyasının hangi Git yürütücüsünün kullanılacağını değiştirebileceği bir kod yürütme yolunu ortadan kaldırır.
- CVE-2023-ZZZZ: HTTPS tarballs gibi uzak URL’lerden yüklenen bağımlılıklar, yalnızca açık izin verilirken çözüme kavuşturulacaktır.
Bu değişiklikler, bağımlılık yükleme betiklerinin otomatik yürütülmesini, Git tabanlı bağımlılıkların otomatik çözümlemesini ve uzak URL bağımlılıklarının otomatik çözümlemesini ortadan kaldırarak tedarik zinciri saldırılarını önemli ölçüde azaltabilir.
Çözüm ve Korunma
Geliştiricilerin, npm v12’ye geçmeden önce bu değişikliklere uyum sağlamak için aşağıdaki adımları izlemeleri önerilmektedir:
- npm v11.16.0 veya üzerinde bir sürüme güncelleyin. Bu sürüm, sürüm 12’de bozulmalara neden olacak tüm işlemlerde uyarılar gösterecektir.
- Otomatik olarak yürütülecek betikler ve bağımlılık kaynakları için açık onay almayı gerektiren bağımlılıkları ve iş akışlarını belirleyin.
- npm v12’ye geçtikten sonra, yalnızca açıkça onaylanan betikler ve bağımlılık kaynakları otomatik olarak çalışacaktır.
Sonuç
Geliştiricilerin, npm v11.16.0 veya üzeri bir sürüme yükselterek sistemlerini güncellemeleri ve açıklamalı onay gerektiren davranışlarını değerlendirmeleri kritik öneme sahiptir. Bu, olası güvenlik ihlallerine karşı projenizin daha sağlam bir yapı kazanmasına yardımcı olacaktır.


