NPM ievainojamība, kas noved pie sistēmas failu pārrakstīšanas

GitHub ir atklājis detalizētu informāciju par septiņām ievainojamībām tar un @npmcli/arborist pakotnēs, kas nodrošina funkcijas darbam ar tar arhīviem un atkarības koka aprēķināšanai pakalpojumā Node.js. Ievainojamības ļauj, izpakojot īpaši izstrādātu arhīvu, pārrakstīt failus ārpus saknes direktorija, kurā tiek veikta izpakošana, ciktāl to atļauj pašreizējās piekļuves tiesības. Problēmas ļauj organizēt patvaļīga koda izpildi sistēmā, piemēram, pievienojot komandas ~/.bashrc vai ~/.profile, ja darbību veic nepievilcīgs lietotājs, vai aizstājot sistēmas failus, ja tie darbojas kā sakne.

Ievainojamību bīstamību pastiprina fakts, ka problemātiskais kods tiek izmantots npm pakotņu pārvaldniekā, veicot darbības ar npm pakotnēm, kas ļauj organizēt uzbrukumu lietotājiem, ievietojot repozitorijā īpaši izstrādātu npm pakotni, apstrādi. no kuriem sistēmā izpildīs uzbrucēja kodu. Uzbrukums ir iespējams pat instalējot pakotnes režīmā “-ignore-scripts”, kas atspējo iebūvēto skriptu izpildi. Kopumā npm ietekmē četras ievainojamības (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 un CVE-2021-39135) no septiņām. Pirmās divas problēmas attiecas uz darvas paku, bet pārējās divas attiecas uz @npmcli/arborist paketi.

Visbīstamāko ievainojamību CVE-2021-32804 izraisa fakts, ka, notīrot darvas arhīvā norādītos absolūtos ceļus, atkārtotas “/” rakstzīmes tiek apstrādātas nepareizi — tiek noņemta tikai pirmā rakstzīme, bet pārējās ir atstātas. Piemēram, ceļš "/home/user/.bashrc" tiks pārveidots par "home/user/.bashrc" un ceļš "//home/user/.bashrc" uz "/home/user/.bashrc". Otrā ievainojamība CVE-2021-37713 parādās tikai Windows platformā un ir saistīta ar nepareizu relatīvo ceļu tīrīšanu, kas ietver neierobežotu diska rakstzīmi (“C:some\path”) un secību, lai atgrieztos iepriekšējā direktorijā ( “C:../foo”).

Ievainojamības CVE-2021-39134 un CVE-2021-39135 ir raksturīgas @npmcli/arborist modulim. Pirmā problēma parādās tikai sistēmās, kas neatšķir rakstzīmju reģistru failu sistēmā (macOS un Windows), un ļauj rakstīt failus patvaļīgā failu sistēmas daļā, starp atkarībām norādot divus moduļus "foo". : "file:/some/path"' un ' FOO: "file:foo.tgz"', kuru apstrāde novedīs pie direktorijas /some/path satura dzēšanas un faila foo.tgz satura ierakstīšanas tajā. Otrā problēma ļauj pārrakstīt failus, izmantojot simboliskas saites manipulācijas.

Ievainojamības ir novērstas Node.js laidienos 12.22.6 un 14.17.6, npm CLI 6.14.15 un 7.21.0, kā arī atsevišķās tar pakotnes laidienos 4.4.19, 5.0.11 un 6.1.10. Pēc informācijas saņemšanas par problēmu kā daļu no "kļūdu veltes" iniciatīvas, GitHub samaksāja pētniekiem 14500 XNUMX USD un skenēja repozitorija saturu, kas neatklāja mēģinājumus izmantot ievainojamības. Lai aizsargātu pret šīm problēmām, GitHub ir arī aizliedzis publicēt NPM pakotnes, kas ietver simboliskas saites, cietās saites un absolūtos ceļus uz repozitoriju.

Avots: opennet.ru

Pievieno komentāru