Dobësi në NPM që çon në mbishkrimin e skedarëve në sistem

GitHub ka zbuluar detaje të shtatë dobësive në paketat tar dhe @npmcli/arborist, të cilat ofrojnë funksione për të punuar me arkivat tar dhe llogaritjen e pemës së varësisë në Node.js. Dobësitë lejojnë, kur shpaketoni një arkivë të krijuar posaçërisht, të mbishkruani skedarët jashtë drejtorisë rrënjësore në të cilën kryhet zbërthimi, për aq sa lejojnë të drejtat aktuale të aksesit. Problemet bëjnë të mundur organizimin e ekzekutimit të kodit arbitrar në sistem, për shembull, duke shtuar komanda në ~/.bashrc ose ~/.profile kur një operacion kryhet nga një përdorues i paprivilegjuar, ose duke zëvendësuar skedarët e sistemit kur funksionon si rrënjë.

Rreziku i dobësive përkeqësohet nga fakti se kodi problematik përdoret në menaxherin e paketave npm gjatë kryerjes së operacioneve me paketat npm, gjë që bën të mundur organizimin e një sulmi ndaj përdoruesve duke vendosur një paketë npm të projektuar posaçërisht në depo, përpunimin. prej të cilave do të ekzekutojë kodin e sulmuesit në sistem. Sulmi është i mundur edhe kur instaloni paketa në modalitetin "-ignore-scripts", i cili çaktivizon ekzekutimin e skripteve të integruara. Në total, npm prek katër dobësi (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 dhe CVE-2021-39135) nga shtatë. Dy problemet e para kanë të bëjnë me paketën e katranit dhe dy të tjerat kanë të bëjnë me paketën @npmcli/arborist.

Dobësia më e rrezikshme, CVE-2021-32804, shkaktohet nga fakti se kur pastroni shtigjet absolute të specifikuara në një arkiv tar, karakteret e përsëritura "/" përpunohen gabimisht - vetëm karakteri i parë hiqet, ndërsa pjesa tjetër lihet. Për shembull, shtegu "/home/user/.bashrc" do të konvertohet në "home/user/.bashrc" dhe shtegu "//home/user/.bashrc" në "/home/user/.bashrc". Dobësia e dytë, CVE-2021-37713, shfaqet vetëm në platformën Windows dhe shoqërohet me pastrimin e gabuar të shtigjeve relative që përfshijnë një karakter të pakufizuar të diskut ("C:some\rrugë") dhe një sekuencë për t'u kthyer në drejtorinë e mëparshme ( “C:../foo”) .

Dobësitë CVE-2021-39134 dhe CVE-2021-39135 janë specifike për modulin @npmcli/arborist. Problemi i parë shfaqet vetëm në sistemet që nuk e dallojnë rastin e karaktereve në sistemin e skedarëve (macOS dhe Windows), dhe ju lejon të shkruani skedarë në një pjesë arbitrare të sistemit të skedarëve duke specifikuar dy module "foo" midis varësive. : "file:/some/path"' dhe ' FOO: "file:foo.tgz"', përpunimi i të cilave do të çojë në fshirjen e përmbajtjes së drejtorisë /some/path dhe shkrimin e përmbajtjes së foo.tgz në të. Problemi i dytë lejon që skedarët të mbishkruhen përmes manipulimit simbolik të lidhjeve.

Dobësitë zgjidhen në versionet Node.js 12.22.6 dhe 14.17.6, npm CLI 6.14.15 dhe 7.21.0, dhe lëshimet individuale të paketave tar 4.4.19, 5.0.11 dhe 6.1.10. Pas marrjes së informacionit rreth problemit si pjesë e iniciativës "bug bounty", GitHub u pagoi studiuesve 14500 dollarë dhe skanoi përmbajtjen e depove, e cila nuk zbuloi përpjekje për të shfrytëzuar dobësitë. Për t'u mbrojtur nga këto çështje, GitHub ka ndaluar gjithashtu publikimin e paketave NPM që përfshijnë lidhje simbolike, lidhje të forta dhe shtigje absolute për në depo.

Burimi: opennet.ru

Shto një koment