Skip to content

Yetersiz göreli yol temizleme yoluyla Windows'ta Rastgele Dosya Oluşturma/Üzerine Yazma

High
Codes-Exe published GHSA-p45f-46x5-6c76 Nov 24, 2021

Package

npm katran (npm)

Affected versions

< 4.4.18 >= 5.0.0, < 5.0.10 >= 6.0.0, < 6.1.9

Patched versions

4.4.18 5.0.10 6.1.9

Description

Darbe
Keyfi Dosya Oluşturma, Keyfi Dosya Üzerine Yazma, Keyfi Kod Yürütme

node-tar, konumu çıkarma hedef dizininin dışında olacak herhangi bir dosyanın ayıklanmamasını garanti etmeyi amaçlar. Bu, kısmen, arşiv içindeki girdilerin mutlak yollarını ..temizleyerek, yol bölümlerini içeren arşiv girişlerini atlayarak ve temizlenmiş yolları çıkarma hedef dizinine karşı çözümleyerek gerçekleştirilir.

Bu mantık, Windows sistemlerinde, mutlak yol olmayan ancak çıkarma hedefinden farklı bir sürücü harfi belirten bir yol içeren tar dosyalarını ayıklarken yetersizdi C:some\path. Sürücü harfi çıkarma hedefiyle eşleşmiyorsa, örneğin D:\extraction\dir, sonucu çıkarma hedef dizini yerine sürücüdeki path.resolve(extractionDirectory, entryPath)geçerli çalışma dizinine göre çözümlenir C:.

Ek olarak, ..yolun bir kısmı, , gibi sürücü harfinden hemen sonra ortaya çıkabilir ve yolun normalleştirilmiş ve bölünmüş kısımları içinde C:../fookontrol edilen mantık tarafından düzgün şekilde temizlenmemiştir ...

Bu sadece node-tarWindows sistemlerindeki kullanıcıları etkiler .

Yamalar
4.4.18 || 5.0.10 || 6.1.9

Geçici çözümler
node-tar'ın şimdi yaptığı yol normalleştirme prosedürlerini gerçekleştirmeden bu sorunu çözmenin makul bir yolu yoktur.

Kullanıcıların, yolları kendilerini temizlemeye çalışmak yerine, node-tar'ın en son yamalı sürümlerine yükseltmeleri önerilir.

Düzeltmek
Sabit sürümler, bu tür yollar "mutlak" olmasalar bile, çıkarma hedef klasörüne karşı çözümlenmeden önce tüm yollardan yol köklerini çıkarır.

Ek olarak, bir sürücü harfiyle başlayan ve ardından gibi iki noktayla başlayan bir yol c:../, ..yol bölümlerinin kontrolünü atlayacaktır . Bu, yamalı sürümlerde düzgün bir şekilde kontrol edilir.

Son olarak, bir derinlemesine savunma kontrolü eklenir, öyle ki, eğer entry.absolutetaret çıkarma taretinin dışındaysa ve biz korumaPaths:true modunda değilsek, o girişte bir uyarı verilir ve bu uyarı atlanır. Şu anda, bu kontrolün gereksiz olduğuna inanılıyor, ancak geliştirme aşamasında bazı gözden kaçanları yakaladı.

Referanslar
GHSA-5955-9wpr-37jh
https://www.npmjs.com/package/tar
https://nvd.nist.gov/vuln/detail/CVE-2021-37713
https://www.oracle.com/security-alerts/cpuoct2021.html

Severity

High

CVE ID

CVE-2021-37713

Weaknesses

Improper Limitation of a Pathname to a Restricted Directory ('Path Traversal')

The product uses external input to construct a pathname that is intended to identify a file or directory that is located underneath a restricted parent directory, but the product does not properly neutralize special elements within the pathname that can cause the pathname to resolve to a location that is outside of the restricted directory. Learn more on MITRE.