NPM-isolek, mis toob kaasa failide üle kirjutamise süsteemis

GitHub paljastas üksikasjad seitsmest haavatavusest pakettides tar ja @npmcli/arborist, mis pakuvad funktsioone tar-arkivide käsitlemiseks ja Node.js sõltuvuspuu arvutamiseks. Haavatavused võimaldavad spetsiaalselt kujundatud arhiivi lahtipakkimise ajal kirjutada faile üle väljaspool juurkatalooge, kuhu lahtipakkimine toimub, sõltuvalt praegustest õigustest. Probleemid võimaldavad korraldada kahjuliku koodi täitmist süsteemis, näiteks lisades käske ~/.bashrc või ~/.profile, kui operatsiooni viib vabatahtlik kasutaja läbi või asendades süsteemifaile juurõigustega käivitamisel.

Haavatavuste oht suureneb, kuna probleemne kood kasutatakse paketihalduris npm npm-paketiga tegelemisel, võimaldades rünnakut kasutajate vastu, kes paigutavad reposse spetsiaalselt kujundatud npm-paketi, mille töötlemisel süsteemis käivitatakse häkkeri kood. Rünnak on võimalik isegi pakettide installimisel režiimis "--ignore-scripts", mis keelab sisseehitatud skriptide täitmise. Kokku mõjutab npm nelja haavatavust (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 ja CVE-2021-39135) seitsmest. Esimene kaks probleemi puudutavad paketti tar, ülejäänud kaks paketti @npmcli/arborist.

Kõige ohtlikum haavatavus CVE-2021-32804 on tingitud sellest, et tar-arhiivis määratud absoluutsete teede puhastamisel töödeldakse korduvaid märke "\/" ebaõigesti — eemaldatakse ainult esimene märk, samas kui teised jäävad alles. Näiteks muudetakse tee "\/home\/user\/.bashrc" vormingusse "home\/user\/.bashrc", ja tee "\/\/home\/user\/.bashrc" muudetakse "\/home\/user\/.bashrc". Teine haavatavus CVE-2021-37713 ilmneb ainult Windowsi platvormil ja on seotud ebaõige puhastamisega suhteliste teede puhul, mis sisaldavad jagamata kettasümbolit ("C:some\path") ja eelmisse kataloogi naasmise järjestust ("C:..\/foo").

CVE-2021-39134 ja CVE-2021-39135 haavatavused on spetsiifilised @npmcli/arborist moodulile. Esimene probleem ilmneb ainult failisüsteemi (macOS ja Windows) puhul, mis ei erine suur- ja väiketähtede vahel, ning võimaldab failide kirjutamist failisüsteemi mis tahes ossa, kui sõltuvustesse lisada kaks moodulit ‘»foo»: «file:/some/path»‘ ja ‘FOO: «file:foo.tgz»‘, mille töötlemine viib katalooge /some/path sisu kustutamiseni ning sinna kirjutamiseni foo.tgz sisu. Teine probleem võimaldab failide üle kirjutamist sümboolsete linkidega manipuleerimise kaudu.

Haavatavused on kõrvaldatud Node.js versioonides 12.22.6 ja 14.17.6, npm CLI 6.14.15 ja 7.21.0, samuti eraldi tar paketi versioonides 4.4.19, 5.0.11 ja 6.1.10. Pärast probleemi teadlikuks saamist bug bounty algatuse raames maksis GitHub uurijatele 14500 dollarit ning skännis oma hoidla sisu, kus ei tuvastatud haavatavuste ära kasutamise katseid. Nendest probleemidest kaitsmiseks kehtestas GitHub ka NPM paketihoidlate publitseerimise keelu, mis sisaldavad sümboolseid linke, kõva linke ja absoluutseid teid.

Allikas: opennet.ru

Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid 🔥 Osta usaldusväärne hostimine veebilehtede jaoks DDoS-i kaitsega, VPS VDS serverid | ProHoster