Zraniteľnosť v NPM vedúca k prepísaniu súborov v systéme

Spoločnosť GitHub zverejnila podrobnosti o siedmich zraniteľnostiach v balíkoch tar a @npmcli/arborist, ktoré poskytujú funkcie na prácu s tar archívmi a na výpočet stromu závislostí v Node.js. Zraniteľnosti umožňujú pri rozbaľovaní špeciálne upraveného archívu prepísať súbory mimo koreňového adresára, do ktorého sa rozbaľuje, v závislosti od aktuálnych prístupových práv. Problémy poskytujú možnosť vykonať ľubovoľný kód v systéme, napríklad pridaním príkazov do ~/.bashrc alebo ~/.profile pri vykonávaní operácie neprivilegovaným používateľom alebo nahradením systémových súborov pri spustení s právami root.

Nebezpečenstvo zraniteľností sa zhoršuje tým, že problémový kód sa používa v balíkovom manažéri npm pri operáciách s npm balíkmi, čo umožňuje zorganizovať útok na používateľov tak, že v repozitári umiestnia špeciálne upravený npm balík, pri spracovaní ktorého v systéme sa vykoná kód útočníka. Útok je možný aj pri inštalácii balíkov v móde "--ignore-scripts", ktorý vypína vykonávanie vstavaných skriptov. Celkovo npm zasahuje štyri zraniteľnosti (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 a CVE-2021-39135) z celkového počtu siedmich. Prvé dve problémy sa týkajú balíka tar, zatiaľ čo ostatné dve balíka @npmcli/arborist.

Najnebezpečnejšia zraniteľnosť CVE-2021-32804 je spôsobená tým, že pri čistení uvedených absolútnych ciest v archíve tar sú nesprávne spracované opakujúce sa znaky "/" — odstráni sa iba prvý znak, zatiaľ čo ostatné zostanú. Napríklad cesta "/home/user/.bashrc" sa pretransformuje na "home/user/.bashrc", zatiaľ čo cesta "//home/user/.bashrc" na "/home/user/.bashrc". Druhá zraniteľnosť CVE-2021-37713 sa prejavuje iba na platforme Windows a súvisí s nesprávnym čistením relatívnych ciest, ktoré obsahujú nerozdeliteľný znak disku ("C:some\path") a sekvenciu na návrat do predchádzajúceho adresára ("C:../foo").

Zraniteľnosti CVE-2021-39134 a CVE-2021-39135 sú špecifické pre modul @npmcli/arborist. Prvý problém sa prejavuje iba na systémoch, ktoré rozlišujú veľké a malé písmená v súborovom systéme (macOS a Windows) a umožňuje zapísať súbory do ľubovoľnej časti súborového systému tým, že v závislostiach uvediete dva moduly '»foo»: «file:/some/path»' a 'FOO: «file:foo.tgz»', pričom spracovanie týchto modulov vedie k vymazaniu obsahu adresára /some/path a zapísaniu obsahu foo.tgz do neho. Druhý problém umožňuje prepísať súbory manipuláciou so symbolickými odkazmi.

Zraniteľnosti boli odstránené vo vydaniach Node.js 12.22.6 a 14.17.6, npm CLI 6.14.15 a 7.21.0, ako aj v samostatných vydaniach balíka tar 4.4.19, 5.0.11 a 6.1.10. Po získaní informácií o probléme v rámci iniciatívy „bug bounty“ GitHub vyplatil výskumníkom 14 500 dolárov a preskenoval obsah repozitára, v ktorom nebola zistená žiadna snaha o zneužitie zraniteľností. Na ochranu pred uvedenými problémami GitHub tiež zaviedol zákaz zverejňovania NPM balíkov, ktoré obsahujú symbolické odkazy, tvrdé odkazy a absolútne cesty.

Zdroj: opennet.ru

Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery 🔥 Kúpte si spoľahlivý hosting pre webové stránky s ochranou proti DDoS, VPS VDS servery | ProHoster