NPM sebezhetőség, amely fájlok felülírásához vezet a rendszerben

A GitHub bemutatta a tar csomagok és az @npmcli/arborist hét sérülékenységének részleteit, amelyek a tar archívumok kezelésére és a Node.js függőségi fák számítására szolgáló funkciókat kínálnak. A sérülékenységek lehetővé teszik, hogy a speciálisan kialakított archívumok kicsomagolásakor fájlokat írjanak felül a gyökérkönyvtáron kívül, amennyire az aktuális hozzáférési jogok megengedik. A problémák lehetővé teszik tetszőleges kód végrehajtását a rendszerben, például parancsok hozzáadásával a ~/ .bashrc vagy ~/ .profile fájlokhoz nem privilegizált felhasználók által végrehajtott műveletek során, vagy rendszerfájlok cseréjével root joggal történő indításkor.

A sérülékenységek veszélyét fokozza, hogy a problémás kódot a npm csomagkezelő használja npm csomagokkal kapcsolatos műveletek során, ami lehetővé teszi a felhasználók elleni támadást, ha egy speciálisan kialakított npm csomagot helyeznek el a repóban, amelynek feldolgozása során a rendszerben végrehajtódik a támadó kódja. A támadás akkor is végrehajtható, ha a csomagok telepítése során az „—ignore-scripts” módot használják, amely letiltja a beépített szkriptek végrehajtását. Összesen négy sérülékenységet érint a npm (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 és CVE-2021-39135) a hétből. Az első két probléma a tar csomagot, míg a másik kettő az @npmcli/arborist csomagot érinti.

A legveszélyesebb sérülékenység, a CVE-2021-32804 abból adódik, hogy a tar archívumban megadott abszolút utak tisztítása során a „/” ismétlődő karakterei helytelenül kezelődnek — csak az első karaktert távolítják el, a többit pedig hagyják. Például az útvonal „/home/user/.bashrc” „home/user/.bashrc”-ra alakul, míg a „//home/user/.bashrc” útvonal „/home/user/.bashrc”-ra módosul. A második sérülékenység, a CVE-2021-37713 csak Windows platformon jelentkezik, és azzal függ össze, hogy a relatív utak, amelyek nem elválasztott meghajtójelet („C:some\path”) és a korábban levő könyvtárba való visszatérést jelző szekvenciát („C:../foo”) tartalmaznak, helytelenül tisztulnak meg.

A CVE-2021-39134 és CVE-2021-39135 sebezhetőségek az @npmcli/arborist modulra jellemzők. Az első probléma csak olyan rendszereken jelentkezik, amelyek nem különböztetik meg a karakterek nagy- és kisbetűit a fájlrendszerben (macOS és Windows), és lehetővé teszi fájlok írását a fájlrendszer tetszőleges részébe, ha a függőségek között két modult adunk meg: '»foo»: «file:/some/path»' és 'FOO: «file:foo.tgz»', ezek feldolgozása a /some/path könyvtár tartalmának törléséhez és a foo.tgz tartalmának írásához vezet. A második probléma lehetővé teszi fájlok felülírását szimbolikus hivatkozások manipulálásával.

A sebezhetőségek javítva lettek a Node.js 12.22.6 és 14.17.6, npm CLI 6.14.15 és 7.21.0 verzióiban, valamint a tar csomag 4.4.19, 5.0.11 és 6.1.10 különböző verzióiban. Miután információt kaptak a problémáról a „bug bounty” kezdeményezés keretében, a GitHub 14 500 dollárt fizetett a kutatóknak, és átvizsgálta a tároló tartalmát, ahol nem találtak próbálkozást a sebezhetőségek kihasználására. A fent említett problémák elleni védelem érdekében a GitHub továbbá megtiltotta az NPM-csomagok közzétételét olyan tárolókban, amelyek szimbolikus hivatkozásokat, kemény hivatkozásokat és abszolút utakat tartalmaznak.

Forrás: opennet.ru

Megbízható hosting vásárlása weboldalak számára, DDoS védelemmel, VPS VDS szerverek. 🔥 Megbízható webtárhely vásárlása DDoS védelemmel, VPS VDS szerverek | ProHoster