Giriş
GitHub, yazılım tedarik zincirinin güvenliğini artırmak amacıyla npm için yeni kontrol mekanizmaları geliştirdi. Bu değişiklik, paket sorumlularının, paketlerin halka açık olarak kurulum için erişilebilir hale gelmeden önce onaylamasına olanak tanıyor.
Saldırı Nasıl Çalışıyor?
GitHub, bu yeniliği “staged publishing” olarak adlandırıyor. Bu özellik, bir paket yayınlanmadan önce, insan bazlı bir sorumlu tarafından iki faktörlü kimlik doğrulama (2FA) sürecinin geçilmesini gerektiriyor. Yani, doğrudan bir yayınlama yerine, önceden hazırlanmış bir tarball, bir bekleme kuyruğuna yükleniyor ve buradan sorumlu kişi onay verdikten sonra kurulabilir hale geliyor. GitHub, bu değişimin “yayın sırasında varlık kanıtı” sağladığını vurguluyor, bu durum sürekli entegre ve sürekli dağıtım (CI/CD) süreçlerinden gelen paketler için de geçerli.
Etkilenen Sistemler
Paket sorumlularının “staged publishing” özelliğini kullanabilmesi için aşağıdaki koşulları sağlaması gerekiyor:
- Yayın erişimine sahip olmalıdır.
- Paketin npm kayıt defterinde önceden mevcut olması gerekmektedir; yani tamamen yeni bir paket bu özellik ile sahnelenemez.
- Hesapta 2FA etkinleştirilmiş olmalıdır.
Geliştiriciler, paketin kök dizininden “npm stage publish” komutunu kullanarak, paketi bir bekleme alanına gönderebilir. Bu komutu kullanmak için, npm CLI’nin 11.15.0 veya daha yeni bir versiyonuna güncellenmesi şarttır. GitHub, optimal koruma için bu özelliğin OIDC kimlik doğrulaması ile birlikte kullanılmasını önermektedir.
Yeni Yükleme Seçenekleri
npm ile ilgili ikinci güncelleme, mevcut -allow-git bayrağına ek olarak üç yeni yükleme kaynak bayrağının tanıtılmasıdır:
- –allow-file: Yerel dosya yolları ve yerel tarball’lar üzerinden yüklemeleri kontrol eder.
- –allow-remote: Uzak URL’ler, HTTPS tarball’ları dahil olmak üzere yüklemeleri kontrol eder.
- –allow-directory: Yerel dizinler üzerinden yüklemeleri kontrol eder.
Bu bayraklar, her bir kayıt dışı yükleme kaynağına aynı açık izin yaklaşımını uygulamak için geliştiricilere olanak tanıyor.
Çözüm ve Korunma
Yazılım tedarik zinciri saldırılarında son zamanlarda önemli bir artış gözlemlenmiştir. Özellikle, TeamPCP olarak bilinen bir siber suç grubu popüler paketleri hedef alarak, büyük çapta zehirleme faaliyetlerine kalkışmıştır. Geliştiricilerin bu tür tehditlere karşı korunmak için atması gereken adımlar şunlardır:
- Paketlerinizi güncelleyin ve “staged publishing” özelliğini entegre edin.
- Hesap güvenliğinizi artırmak için 2FA kullanın.
- Paketi sunmadan önce güvenilir yayıncı ayarlarını gözden geçirin.
- Güvenli yükleme için yeni yükleme kaynak bayraklarını kullanın.
Sonuç
Geliştiricilerin yazılım tedarik zinciri güvenliğini artırmaları için mevcut sistemlerini bu yeni özelliklerle entegre etmeleri kritik bir önem taşımaktadır. Güncellemeleri uygulamak ve gerekli güvenlik önlemlerini almak, olası saldırılara karşı en etkili koruma yöntemidir.


