Zraniteľnosť v NPM, ktorá vedie k prepísaniu súborov v systéme

GitHub odhalil podrobnosti o siedmich zraniteľnostiach v balíkoch tar a @npmcli/arborist, ktoré poskytujú funkcie na prácu s archívmi tar a výpočet stromu závislostí v Node.js. Chyby umožňujú pri rozbaľovaní špeciálne navrhnutého archívu prepisovať súbory mimo koreňového adresára, do ktorého sa rozbaľovanie vykonáva, pokiaľ to aktuálne prístupové práva umožňujú. Problémy umožňujú organizovať vykonávanie ľubovoľného kódu v systéme, napríklad pridaním príkazov do ~/.bashrc alebo ~/.profile, keď operáciu vykonáva neprivilegovaný používateľ, alebo nahradením systémových súborov pri spustení ako koreň.

Nebezpečenstvo zraniteľnosti zvyšuje skutočnosť, že problematický kód sa používa v správcovi balíkov npm pri vykonávaní operácií s balíkmi npm, čo umožňuje zorganizovať útok na používateľov umiestnením špeciálne navrhnutého balíka npm do úložiska, spracovanie ktorý v systéme spustí kód útočníka. Útok je možný aj pri inštalácii balíkov v režime „-ignore-scripts“, ktorý zakáže vykonávanie vstavaných skriptov. Celkovo npm ovplyvňuje štyri zraniteľnosti (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 a CVE-2021-39135) zo siedmich. Prvé dva problémy sa týkajú balíka tar a zvyšné dva sa týkajú balíka @npmcli/arborist.

Najnebezpečnejšia zraniteľnosť, CVE-2021-32804, je spôsobená skutočnosťou, že pri čistení absolútnych ciest špecifikovaných v archíve tar sa nesprávne spracujú opakované znaky „/“ – odstráni sa iba prvý znak, zatiaľ čo ostatné ostanú. Napríklad cesta "/home/user/.bashrc" sa skonvertuje na "home/user/.bashrc" a cesta "//home/user/.bashrc" na "/home/user/.bashrc". Druhá chyba zabezpečenia, CVE-2021-37713, sa objavuje iba na platforme Windows a súvisí s nesprávnym čistením relatívnych ciest, ktoré obsahujú neobmedzený znak jednotky („C:some\path“) a postupnosť návratu do predchádzajúceho adresára ( „C:../foo“).

Chyby zabezpečenia CVE-2021-39134 a CVE-2021-39135 sú špecifické pre modul @npmcli/arborist. Prvý problém sa vyskytuje iba v systémoch, ktoré nerozlišujú veľké a malé písmená v súboroch (macOS a Windows) a umožňuje zapisovať súbory do ľubovoľnej časti súborového systému zadaním dvoch modulov „foo“ medzi závislosťami. : "file:/some/path"' a ' FOO: "file:foo.tgz"', ktorých spracovanie povedie k vymazaniu obsahu adresára /some/path a zapísanie obsahu foo.tgz do neho. Druhý problém umožňuje prepisovanie súborov pomocou manipulácie so symbolickým odkazom.

Chyby zabezpečenia sú vyriešené vo vydaniach Node.js 12.22.6 a 14.17.6, npm CLI 6.14.15 a 7.21.0 a jednotlivých vydaniach balíkov tar 4.4.19, 5.0.11 a 6.1.10. Po prijatí informácií o probléme v rámci iniciatívy „bug bounty“ GitHub zaplatil výskumníkom 14500 XNUMX dolárov a naskenoval obsah úložiska, čo neodhalilo pokusy o zneužitie zraniteľností. Na ochranu pred týmito problémami GitHub tiež zakázal zverejňovať balíčky NPM, ktoré obsahujú symbolické odkazy, pevné odkazy a absolútne cesty k úložisku.

Zdroj: opennet.ru

Pridať komentár