Vulnerabilità in NPM che porta alla sovrascrittura dei file sul sistema

GitHub ha rivelato i dettagli di sette vulnerabilità nei pacchetti tar e @npmcli/arborist, che forniscono funzioni per lavorare con gli archivi tar e calcolare l'albero delle dipendenze in Node.js. Le vulnerabilità consentono, quando si decomprime un archivio appositamente progettato, di sovrascrivere file al di fuori della directory principale in cui viene eseguito lo decompressione, per quanto consentito dai diritti di accesso attuali. I problemi rendono possibile organizzare l'esecuzione di codice arbitrario sul sistema, ad esempio, aggiungendo comandi a ~/.bashrc o ~/.profile quando un'operazione viene eseguita da un utente non privilegiato, o sostituendo i file di sistema quando si esegue come radice.

Il pericolo di vulnerabilità è aggravato dal fatto che il codice problematico viene utilizzato nel gestore pacchetti npm quando si eseguono operazioni con pacchetti npm, il che consente di organizzare un attacco agli utenti inserendo nel repository un pacchetto npm appositamente progettato, l'elaborazione di cui eseguirà il codice dell'attaccante sul sistema. L'attacco è possibile anche quando si installano i pacchetti in modalità “-ignore-scripts”, che disabilita l'esecuzione degli script integrati. In totale, npm colpisce quattro vulnerabilità (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 e CVE-2021-39135) su sette. I primi due problemi riguardano il pacchetto tar, mentre i restanti due riguardano il pacchetto @npmcli/arborist.

La vulnerabilità più pericolosa, CVE-2021-32804, è causata dal fatto che quando si cancellano i percorsi assoluti specificati in un archivio tar, i caratteri "/" ripetuti vengono elaborati in modo errato: viene rimosso solo il primo carattere, mentre il resto viene lasciato. Ad esempio, il percorso "/home/user/.bashrc" verrà convertito in "home/user/.bashrc" e il percorso "//home/user/.bashrc" in "/home/user/.bashrc". La seconda vulnerabilità, CVE-2021-37713, appare solo sulla piattaforma Windows ed è associata a un'errata pulizia dei percorsi relativi che includono un carattere di unità illimitato (“C:some\path”) e una sequenza per tornare alla directory precedente ( “C:../foo”) .

Le vulnerabilità CVE-2021-39134 e CVE-2021-39135 sono specifiche del modulo @npmcli/arborist. Il primo problema appare solo sui sistemi che non distinguono i caratteri nel file system (macOS e Windows), e consente di scrivere file in una parte arbitraria del file system specificando due moduli "foo" tra le dipendenze : "file:/some/path"' e ' FOO: "file:foo.tgz"', la cui elaborazione porterà all'eliminazione del contenuto della directory /some/path e alla scrittura del contenuto di foo.tgz su di essa. Il secondo problema consente la sovrascrittura dei file tramite la manipolazione dei collegamenti simbolici.

Le vulnerabilità sono state risolte nelle versioni 12.22.6 e 14.17.6 di Node.js, nella CLI npm 6.14.15 e 7.21.0 e nelle versioni 4.4.19, 5.0.11 e 6.1.10 dei singoli pacchetti tar. Dopo aver ricevuto informazioni sul problema nell'ambito dell'iniziativa "bug bounty", GitHub ha pagato ai ricercatori 14500 dollari e ha scansionato il contenuto del repository, che non ha rivelato tentativi di sfruttare le vulnerabilità. Per proteggersi da questi problemi, GitHub ha anche vietato la pubblicazione di pacchetti NPM che includono collegamenti simbolici, collegamenti reali e percorsi assoluti al repository.

Fonte: opennet.ru

Aggiungi un commento