Sistemdəki faylların üzərinə yazılmasına səbəb olan NPM-də zəiflik

GitHub tar arxivləri ilə işləmək və Node.js-də asılılıq ağacının hesablanması funksiyalarını təmin edən tar və @npmcli/arborist paketlərində yeddi zəifliyin təfərrüatlarını açıqlayıb. Zəifliklər, xüsusi hazırlanmış arxivi açarkən, cari giriş hüquqlarının imkan verdiyi qədər, açılışın həyata keçirildiyi kök kataloqdan kənar faylların üzərinə yazmağa imkan verir. Problemlər sistemdə ixtiyari kodun icrasını təşkil etməyə imkan verir, məsələn, əməliyyat imtiyazsız istifadəçi tərəfindən yerinə yetirildikdə ~/.bashrc və ya ~/.profile-ə əmrlər əlavə etməklə və ya aşağıdakı kimi işləyərkən sistem fayllarını əvəz etməklə. kök.

Boşluqların təhlükəsi, npm paketləri ilə əməliyyatlar həyata keçirərkən problemli kodun npm paket menecerində istifadə edilməsi ilə daha da gücləndirilir ki, bu da repozitoriyada xüsusi hazırlanmış npm paketini yerləşdirməklə istifadəçilərə hücum təşkil etməyə, emal etməyə imkan verir. bunlardan sistemdə təcavüzkarın kodunu icra edəcək. Hücum hətta daxili skriptlərin icrasını dayandıran “-ignore-scripts” rejimində paketlər quraşdırarkən də mümkündür. Ümumilikdə, npm yeddidən dörd zəifliyə (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 və CVE-2021-39135) təsir edir. İlk iki problem tar paketinə, qalan iki problem isə @npmcli/arborist paketinə aiddir.

Ən təhlükəli zəiflik, CVE-2021-32804, tar arxivində göstərilən mütləq yolları təmizləyərkən təkrarlanan “/” simvollarının düzgün işlənməməsi ilə əlaqədardır – yalnız birinci simvol silinir, qalanları isə qalır. Məsələn, "/home/user/.bashrc" yolu "home/user/.bashrc", "//home/user/.bashrc" yolu isə "/home/user/.bashrc" yoluna çevriləcək. İkinci boşluq, CVE-2021-37713, yalnız Windows platformasında görünür və qeyri-məhdud disk simvolu ("C: some\path") və əvvəlki qovluğa qayıtmaq üçün ardıcıllıqla ( “C:../foo”).

CVE-2021-39134 və CVE-2021-39135 boşluqları @npmcli/arborist moduluna xasdır. Birinci problem yalnız fayl sistemindəki simvolların vəziyyətini fərqləndirməyən sistemlərdə (macOS və Windows) görünür və asılılıqlar arasında iki modul "foo" təyin etməklə fayl sisteminin ixtiyari hissəsinə fayl yazmağa imkan verir. : "file:/some/path"' və ' FOO: "file:foo.tgz"', onların işlənməsi /some/path kataloqunun məzmununun silinməsinə və foo.tgz məzmununun ona yazılmasına səbəb olacaq. İkinci problem simvolik keçid manipulyasiyası vasitəsilə faylların üzərinə yazmağa imkan verir.

Zəifliklər Node.js buraxılışları 12.22.6 və 14.17.6, npm CLI 6.14.15 və 7.21.0 və fərdi tar paketi buraxılışları 4.4.19, 5.0.11 və 6.1.10-da həll olunur. “Böcək mükafatı” təşəbbüsünün bir hissəsi kimi problem haqqında məlumat aldıqdan sonra GitHub tədqiqatçılara 14500 dollar ödəyib və boşluqlardan istifadə cəhdlərini aşkar etməyən deponun məzmununu skan edib. Bu problemlərdən qorunmaq üçün GitHub həmçinin simvolik bağlantılar, sərt keçidlər və depoya mütləq yollar daxil olan NPM paketlərinin dərcini qadağan edib.

Mənbə: opennet.ru

Добавить комментарий