CVE-2021-39134
Açıklama
npm komut satırı arayüzü için bağımlılık ağaçlarını hesaplayan ve `node_modules` klasör hiyerarşisini yöneten kütüphane olan `@npmcli/arborist`, paket bağımlılık sözleşmelerinin karşılanmasını ve paket içeriklerinin çıkarılmasının her zaman beklenen klasöre yapılmasını garanti etmeyi amaçlar. Bu durum, kısmen `package.json` manifestolarında belirli bir isme sahip bağımlılıklar için tanımlanan bağımlılık belirleyicilerinin çözümlenmesi ve çakışan bağımlılıkları gidermek için klasörlerin iç içe yerleştirilmesiyle sağlanır. Birden fazla bağımlılık yalnızca isimlerinin büyük/küçük harf kullanımı açısından farklılık gösterdiğinde, Arborist'in dahili veri yapısı bunları `node_modules` hiyerarşisinin aynı seviyesinde bir arada bulunabilen ayrı öğeler olarak görüyordu. Ancak, büyük/küçük harfe duyarsız dosya sistemlerinde (macOS ve Windows gibi) durum böyle değildir. `file:/some/path` gibi bir sembolik bağlantı (symlink) bağımlılığı ile birleştiğinde bu durum, bir saldırganın dosya sistemindeki herhangi bir konuma rastgele içeriklerin yazılabileceği bir senaryo oluşturmasına izin vermekteydi. Örneğin, `pwn-a` adlı bir paket, `package.json` dosyasında `"foo": "file:/some/path"` şeklinde bir bağımlılık tanımlayabilirdi. Başka bir paket olan `pwn-b` ise `FOO: "file:foo.tgz"` şeklinde bir bağımlılık tanımlayabilirdi. Büyük/küçük harfe duyarsız dosya sistemlerinde, önce `pwn-a` kurulup ardından `pwn-b` kurulursa, `foo.tgz` içeriği `/some/path` konumuna yazılır ve `/some/path` konumundaki mevcut tüm içerikler silinirdi. Büyük/küçük harfe duyarsız bir dosya sisteminde npm v7.20.6 veya daha eski sürümleri kullanan herkes potansiyel olarak etkilenmektedir. Bu sorun, npm v7.20.7 ve üzeri sürümlerde yer alan @npmcli/arborist 2.8.2 sürümünde düzeltilmiştir.
Nasıl düzeltilir
- npmjs arborist2.8.2 ya da sonraki bir sürüm
- siemens sinec_infrastructure_network_services1.0.1.1 ya da sonraki bir sürüm
- @npmcli/arborist2.8.2 ya da sonraki bir sürüm
Etkilenen ürünler
| Ürün | Etkilenen sürümler | Düzeltildiği sürüm |
|---|---|---|
| npmjs arborist | v < 2.8.2 | 2.8.2 |
| oracle graalvm | 20.3.3, 21.2.0 | — |
| siemens sinec_infrastructure_network_services | v < 1.0.1.1 | 1.0.1.1 |
| @npmcli/arboristnpm | v < 2.8.2 | 2.8.2 |
Sürümünüzü kontrol edin
Ürünü seçin ve kullandığınız sürümü yazın; sürümün etkilenen aralıkta olup olmadığını görün.
Attack Surface Management
Alan adlarınıza bağlı varlıkları, bu varlıklarda çalışan teknolojileri ve bilinen zafiyetleri tek listede görün.