CVE-2021-37701 in node-tar
Riassunto
di VulDB • 17/06/2026
Il pacchetto npm "tar" (noto anche come node-tar) nelle versioni precedenti alla 4.4.16, 5.0.8 e 6.1.7 presenta una vulnerabilità di creazione/sovrascrittura arbitraria di file ed esecuzione di codice arbitrario. L'obiettivo di node-tar è garantire che qualsiasi il cui percorso verrebbe modificato da un link simbolico non venga estratto. Questo viene ottenuto, in parte, assicurandosi che le directory estratte non siano symlink. Inoltre, al fine di evitare chiamate stat non necessarie per determinare se un determinato percorso sia una directory, i percorsi vengono memorizzati nella cache quando le directory vengono create. Questa logica era insufficiente durante l'estrazione di file tar contenenti sia una directory che un link simbolico con lo stesso nome della directory, dove il link simbolico e la directory nell'entry dell'archivio utilizzavano backslash come separatore di percorso su sistemi POSIX. La logica di controllo della cache utilizzava sia i caratteri `\` che `/` come separatori di percorso; tuttavia, `\` è un carattere valido per i nomi dei file sui sistemi POSIX. Creando prima una directory e sostituendola successivamente con un link simbolico, era quindi possibile aggirare i controlli degli symlink su directory in node-tar, consentendo essenzialmente a un file tar non attendibile di creare un symlink verso una posizione arbitraria ed estrarrvi successivamente file arbitrari, permettendo così la creazione e sovrascrittura arbitrarie di file. Inoltre, potrebbe verificarsi una confusione simile sui filesystem case-insensitive (sensibili alle maiuscole/minuscole). Se un archivio tar conteneva una directory denominata `FOO`, seguita da un link simbolico chiamato `foo`, su filesystem non sensibili al caso la creazione del link simbolico rimuoverebbe la directory dal filesystem, ma _non_ dalla cache interna delle directory, poiché non verrebbe trattata come una corrispondenza nella cache (cache hit). Una successiva entry di file all'interno della directory `FOO` verrebbe quindi posizionata nel target del link simbolico, credendo che la directory fosse già stata creata. Questi problemi sono stati risolti nelle versioni 4.4.16, 5.0.8 e 6.1.7. Il ramo v3 di node-tar è stato deprecato e non ha ricevuto patch per queste vulnerabilità. Se si sta ancora utilizzando una versione della serie v3, si consiglia di aggiornare a una versione più recente di node-tar. Qualora ciò non fosse possibile, è disponibile un workaround nella GHSA-9r2w-394v-53qc citata.
If you want to get best quality of vulnerability data, you may have to visit VulDB.