NPM'de sistemdeki dosyaların üzerine yazılmasına yol açan güvenlik açığı

GitHub, tar arşivleriyle çalışmak ve Node.js'deki bağımlılık ağacını hesaplamak için işlevler sağlayan tar ve @npmcli/arborist paketlerindeki yedi güvenlik açığının ayrıntılarını açıkladı. Güvenlik açıkları, özel olarak tasarlanmış bir arşivi açarken, geçerli erişim hakları izin verdiği ölçüde, paketin açılmasının gerçekleştirildiği kök dizin dışındaki dosyaların üzerine yazılmasına olanak tanır. Sorunlar, örneğin ayrıcalıklı olmayan bir kullanıcı tarafından bir işlem gerçekleştirildiğinde ~/.bashrc veya ~/.profile dosyasına komutlar ekleyerek veya olarak çalışırken sistem dosyalarını değiştirerek, sistemde rastgele kod yürütülmesini organize etmeyi mümkün kılar. kök.

Güvenlik açığı tehlikesi, npm paketleriyle işlemler yapılırken sorunlu kodun npm paket yöneticisinde kullanılmasıyla daha da kötüleşiyor, bu da özel olarak tasarlanmış bir npm paketini depoya yerleştirerek kullanıcılara bir saldırı düzenlemeyi mümkün kılıyor, işlem Bunlardan biri saldırganın kodunu sistemde çalıştıracaktır. Saldırı, yerleşik komut dosyalarının yürütülmesini devre dışı bırakan "-ignore-scripts" modunda paketler yüklenirken bile mümkündür. Toplamda npm, yedi güvenlik açığından dördünü (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 ve CVE-2021-39135) etkiliyor. İlk iki sorun tar paketiyle, kalan ikisi ise @npmcli/arborist paketiyle ilgilidir.

En tehlikeli güvenlik açığı olan CVE-2021-32804, tar arşivinde belirtilen mutlak yolları temizlerken tekrarlanan "/" karakterlerinin yanlış işlenmesinden kaynaklanır; yalnızca ilk karakter kaldırılır, geri kalanı kalır. Örneğin, "/home/user/.bashrc" yolu "home/user/.bashrc"ye ve "//home/user/.bashrc" yolu "/home/user/.bashrc"ye dönüştürülecektir. İkinci güvenlik açığı olan CVE-2021-37713, yalnızca Windows platformunda ortaya çıkıyor ve sınırsız bir sürücü karakteri (“C:some\path”) ve önceki dizine geri dönme sırası içeren ilgili yolların yanlış temizlenmesiyle ilişkili ( “C:../foo”) .

CVE-2021-39134 ve CVE-2021-39135 güvenlik açıkları @npmcli/arborist modülüne özeldir. İlk sorun yalnızca dosya sistemindeki karakterlerin büyük/küçük harf durumunu ayırt etmeyen sistemlerde (macOS ve Windows) ortaya çıkar ve bağımlılıklar arasında iki modül 'foo' belirterek dosya sisteminin isteğe bağlı bir bölümüne dosya yazmanıza izin verir. : "file:/some/path"' ve ' FOO: "file:foo.tgz"', bunların işlenmesi /some/path dizininin içeriğinin silinmesine ve foo.tgz içeriğinin buraya yazılmasına yol açacaktır. İkinci sorun, sembolik bağlantı manipülasyonu yoluyla dosyaların üzerine yazılmasına izin verir.

Güvenlik açıkları, Node.js 12.22.6 ve 14.17.6 sürümlerinde, npm CLI 6.14.15 ve 7.21.0'da ve bireysel tar paketi 4.4.19, 5.0.11 ve 6.1.10 sürümlerinde giderilmiştir. "Hata ödülü" girişiminin bir parçası olarak sorun hakkında bilgi aldıktan sonra GitHub, araştırmacılara 14500 dolar ödedi ve veri havuzunun içeriğini taradı, ancak güvenlik açıklarından yararlanmaya yönelik herhangi bir girişim ortaya çıkmadı. Bu sorunlara karşı koruma sağlamak için GitHub ayrıca sembolik bağlantılar, sabit bağlantılar ve depoya giden mutlak yollar içeren NPM paketlerinin yayınlanmasını da yasakladı.

Kaynak: opennet.ru

Yorum ekle