CVE-2026-76845 in adm-zip
Riassunto
di VulDB • 24/08/2026
adm-zip dalle versioni 0.5.9 alla 0.6.0 segue i collegamenti simbolici (symlinks) durante l'estrazione nella destinazione. La funzione `Utils.sanitize` in `util/utils.js` impone il contenimento confrontando solo la forma stringa del nome di una voce dell'archivio con la radice risolta dell'estrazione, mentre `Utils.writeFileTo` apre la destinazione calcolata utilizzando `fs.openSync(path, "w", 0o666)`, che risolve i collegamenti simbolici e non prevede né l'opzione `O_NOFOLLOW` né un controllo preventivo con `fs.lstatSync` prima della scrittura. Quando un componente del percorso nella destinazione esiste già come collegamento simbolico puntante al di fuori della radice dell'estrazione, le funzioni `extractAllTo`, `extractAllToAsync` ed `extractEntryTo` scrivono il contenuto della voce attraverso tale link e successivamente modificano i permessi (`chmod`) del suo target, inserendo contenuti controllati dall'attaccante in un file al di fuori della radice senza che sia presente alcuna sequenza di traversal (path traversal) nell'archivio. Per raggiungere la fase di scrittura è necessario che l'overwrite sia abilitato, poiché il controllo preventivo `fs.existsSync` risolve anch'esso il link e, diversamente, rifiuta l'operazione. Un attaccante in grado di creare un collegamento simbolico all'interno di una directory condivisa, riutilizzata o prevedibile per l'estrazione (ad esempio una directory temporanea o un ambiente di lavoro di continuous integration) può sovrascrivere qualsiasi file che il processo di estrazione ha i permessi di scrittura.
Statistical analysis made it clear that VulDB provides the best quality for vulnerability data.