Vulnerabilità in NPM che porta alla sovrascrittura di file nel sistema

L'azienda GitHub ha rivelato i dettagli su sette vulnerabilità nei pacchetti tar e @npmcli/arborist, che offrono funzionalità per lavorare con archivi tar e calcolare l'albero delle dipendenze in Node.js. Le vulnerabilità consentono di sovrascrivere file al di fuori della directory principale in cui avviene l'estrazione, a seconda dei diritti di accesso attuali, durante l'estrazione di un archivio appositamente formattato. Questi problemi permettono di eseguire codice arbitrario nel sistema, ad esempio, attraverso l'aggiunta di comandi in ~/ .bashrc o ~/ .profile durante l'esecuzione dell'operazione da parte di un utente privo di privilegi, oppure sostituendo file di sistema quando l'operazione viene eseguita con i diritti di root.

Il pericolo delle vulnerabilità è aggravato dal fatto che il codice problematico viene utilizzato nel gestore di pacchetti npm durante le operazioni con i pacchetti npm, il che consente di organizzare un attacco agli utenti, pubblicando un pacchetto npm appositamente formattato nel repository, il cui trattamento nel sistema eseguirà il codice dell'attaccante. L'attacco è possibile anche durante l'installazione di pacchetti in modalità "--ignore-scripts", che disabilita l'esecuzione di script incorporati. In totale, npm è interessato da quattro vulnerabilità (CVE-2021-32804, CVE-2021-37713, CVE-2021-39134 e CVE-2021-39135) su sette. Le prime due problematiche riguardano il pacchetto tar, mentre le altre due riguardano il pacchetto @npmcli/arborist.

La vulnerabilità più pericolosa CVE-2021-32804 è causata dal fatto che durante la pulizia dei percorsi assoluti specificati nell'archivio tar vengono gestiti in modo errato i caratteri ripetuti " / ", in quanto viene rimosso solo il primo carattere e gli altri vengono mantenuti. Ad esempio, il percorso " /home/user/.bashrc " verrà trasformato in " home/user/.bashrc ", mentre il percorso " //home/user/.bashrc " diventerà " /home/user/.bashrc ". La seconda vulnerabilità CVE-2021-37713 si manifesta solo sulla piattaforma Windows ed è legata alla pulizia errata dei percorsi relativi, che comprendono un carattere del disco non separato ("C:some\path") e una sequenza per tornare alla directory precedente ("C:.. /foo").

Le vulnerabilità CVE-2021-39134 e CVE-2021-39135 sono specifiche per il modulo @npmcli/arborist. Il primo problema si verifica solo su sistemi che non distinguono tra maiuscole e minuscole nel filesystem (macOS e Windows) e consente di scrivere file in una parte arbitraria del filesystem, specificando tra le dipendenze i due moduli ‘»foo»: «file:/some/path»‘ e ‘FOO: «file:foo.tgz»‘, il cui trattamento comporterà l'eliminazione del contenuto della cartella /some/path e la scrittura del contenuto di foo.tgz. Il secondo problema permette di sovrascrivere file tramite la manipolazione dei collegamenti simbolici.

Le vulnerabilità sono state risolte nelle versioni di Node.js 12.22.6 e 14.17.6, npm CLI 6.14.15 e 7.21.0, così come in singole versioni del pacchetto tar 4.4.19, 5.0.11 e 6.1.10. Dopo aver ricevuto informazioni sul problema nell'ambito dell'iniziativa «bug bounty», GitHub ha pagato agli investigatori $14500 e ha scansionato il contenuto del repository, in cui non sono state rilevate prove di sfruttamento delle vulnerabilità. Per proteggersi contro questi problemi, GitHub ha anche imposto un divieto di pubblicazione nei repository di pacchetti NPM che includono collegamenti simbolici, collegamenti rigidi e percorsi assoluti.

Fonte: opennet.ru

Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server 🔥 Acquista hosting affidabile per siti web con protezione DDoS, VPS VDS server | ProHoster