Ranjivost u NPM-u koja dovodi do prepisivanja datoteka na sistemu

GitHub je otkrio detalje o sedam ranjivosti u paketima tar i @npmcli/arborist, koji pružaju funkcije za rad sa tar arhivama i izračunavanje stabla zavisnosti u Node.js. Ranjivosti omogućavaju da se prilikom raspakivanja posebno dizajnirane arhive prebrišu datoteke izvan korijenskog direktorija u koji se raspakira, koliko to dozvoljavaju trenutna prava pristupa. Problemi omogućavaju organiziranje izvršavanja proizvoljnog koda na sistemu, na primjer, dodavanjem komandi u ~/.bashrc ili ~/.profile kada operaciju izvodi neprivilegirani korisnik, ili zamjenom sistemskih datoteka kada se radi kao root.

Opasnost od ranjivosti se pogoršava činjenicom da se problematični kod koristi u npm paket menadžeru prilikom izvođenja operacija sa npm paketima, što omogućava organizovanje napada na korisnike postavljanjem posebno dizajniranog npm paketa u spremište, procesiranje od kojih će izvršiti napadačev kod na sistemu. Napad je moguć čak i kada se paketi instaliraju u režimu “-ignore-scripts”, koji onemogućava izvršavanje ugrađenih skripti. Ukupno, npm utiče na četiri ranjivosti (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 i CVE-2021-39135) od sedam. Prva dva problema se odnose na tar paket, a preostala dva na paket @npmcli/arborist.

Najopasnija ranjivost, CVE-2021-32804, uzrokovana je činjenicom da prilikom brisanja apsolutnih putanja navedenih u tar arhivi, ponovljeni znakovi “/” se obrađuju pogrešno – uklanja se samo prvi znak, dok se ostali ostavljaju. Na primjer, putanja "/home/user/.bashrc" će biti konvertirana u "home/user/.bashrc", a putanja "//home/user/.bashrc" u "/home/user/.bashrc". Druga ranjivost, CVE-2021-37713, pojavljuje se samo na Windows platformi i povezana je s netačnim čišćenjem relativnih staza koje uključuju neograničeni znak diska (“C:some\path”) i sekvencu za povratak u prethodni direktorij ( “C:../foo”) .

Ranjivosti CVE-2021-39134 i CVE-2021-39135 su specifične za @npmcli/arborist modul. Prvi problem se pojavljuje samo na sistemima koji ne razlikuju mala slova znakova u sistemu datoteka (macOS i Windows) i omogućava vam da upisujete datoteke u proizvoljni dio sistema datoteka tako što ćete navesti dva modula '"foo" među ovisnostima : "file:/some/path"' i ' FOO: "file:foo.tgz"', čija obrada će dovesti do brisanja sadržaja /some/path direktorija i upisivanja sadržaja foo.tgz u njega. Drugi problem omogućava prepisivanje datoteka putem simboličke manipulacije veza.

Ranjivosti su riješene u Node.js izdanjima 12.22.6 i 14.17.6, npm CLI 6.14.15 i 7.21.0 i pojedinačnim izdanjima tar paketa 4.4.19, 5.0.11 i 6.1.10. Nakon što je dobio informaciju o problemu u sklopu inicijative “bug bounty”, GitHub je platio istraživačima 14500 dolara i skenirao sadržaj repozitorija, što nije otkrilo pokušaje iskorištavanja ranjivosti. Kako bi se zaštitio od ovih problema, GitHub je također zabranio objavljivanje NPM paketa koji uključuju simboličke veze, tvrde veze i apsolutne putanje do spremišta.

izvor: opennet.ru

Dodajte komentar