Vulnerabilitatea în NPM care duce la suprascrierea fișierelor din sistem

GitHub a dezvăluit detalii despre șapte vulnerabilități din pachetele tar și @npmcli/arborist, care oferă funcții pentru lucrul cu arhivele tar și calcularea arborelui de dependență în Node.js. Vulnerabilitățile permit, la despachetarea unei arhive special concepute, să se suprascrie fișiere din afara directorului rădăcină în care se efectuează dezambalarea, în măsura în care drepturile de acces actuale permit. Problemele fac posibilă organizarea execuției codului arbitrar pe sistem, de exemplu, prin adăugarea de comenzi la ~/.bashrc sau ~/.profile atunci când o operație este efectuată de un utilizator neprivilegiat sau prin înlocuirea fișierelor de sistem atunci când rulează ca rădăcină.

Pericolul vulnerabilităților este agravat de faptul că codul problematic este utilizat în managerul de pachete npm atunci când se efectuează operațiuni cu pachete npm, ceea ce face posibilă organizarea unui atac asupra utilizatorilor prin plasarea unui pachet npm special conceput în depozit, procesarea dintre care va executa codul atacatorului pe sistem. Atacul este posibil chiar și atunci când se instalează pachete în modul „-ignore-scripts”, care dezactivează execuția scripturilor încorporate. În total, npm afectează patru vulnerabilități (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 și CVE-2021-39135) din șapte. Primele două probleme se referă la pachetul tar, iar celelalte două se referă la pachetul @npmcli/arborist.

Cea mai periculoasă vulnerabilitate, CVE-2021-32804, este cauzată de faptul că, la ștergerea căilor absolute specificate într-o arhivă tar, caracterele „/” repetate sunt procesate incorect — doar primul caracter este eliminat, în timp ce restul sunt lăsate. De exemplu, calea „/home/user/.bashrc” va fi convertită în „home/user/.bashrc” și calea „//home/user/.bashrc” în „/home/user/.bashrc”. A doua vulnerabilitate, CVE-2021-37713, apare doar pe platforma Windows și este asociată cu curățarea incorectă a căilor relative care includ un caracter de unitate nelimitat (“C:some\path”) și o secvență pentru a reveni la directorul anterior ( „C:../foo”).

Vulnerabilitățile CVE-2021-39134 și CVE-2021-39135 sunt specifice modulului @npmcli/arborist. Prima problemă apare doar pe sistemele care nu disting majusculele caracterelor din sistemul de fișiere (macOS și Windows) și vă permite să scrieți fișiere într-o parte arbitrară a sistemului de fișiere prin specificarea a două module „foo” printre dependențe. : "file:/some/path"' și ' FOO: "file:foo.tgz"', procesarea cărora va duce la ștergerea conținutului directorului /some/path și la scrierea conținutului foo.tgz în acesta. A doua problemă permite suprascrierea fișierelor prin manipulare simbolică a legăturilor.

Vulnerabilitățile sunt rezolvate în versiunile Node.js 12.22.6 și 14.17.6, npm CLI 6.14.15 și 7.21.0 și versiunile de pachete tar individuale 4.4.19, 5.0.11 și 6.1.10. După ce a primit informații despre problemă ca parte a inițiativei „bug bounty”, GitHub a plătit cercetătorilor 14500 de dolari și a scanat conținutul depozitului, care nu a dezvăluit încercări de exploatare a vulnerabilităților. Pentru a se proteja împotriva acestor probleme, GitHub a interzis, de asemenea, publicarea pachetelor NPM care includ link-uri simbolice, link-uri hard și căi absolute către depozit.

Sursa: opennet.ru

Adauga un comentariu