
Prueba de concepto de exploit para CVE-2026-23745, una vulnerabilidad de path traversal en node-tar que permite la sobrescritura arbitraria de archivos mediante archivos tar maliciosos.
Investigación: Joshua van Rijswijk
PoC para CVE-2026-23745, una vulnerabilidad de traversal de rutas de alta severidad en node-tar ( <7.5.2).
La librería no sanitiza rutas absolutas en el campo linkpath para Hardlinks y Symlinks. Esto permite que archivos tar maliciosos omitan la raíz de extracción y sobrescriban archivos arbitrarios en el sistema host, incluso cuando preservePaths: false está configurado.
Ubicada en src/unpack.ts. La librería usa path.resolve() sobre entrada de usuario sin sanitizar:
// El bug: path.resolve ignora 'cwd' si el segundo argumento es absoluto
const target = path.resolve(this.cwd, String(entry.linkpath))
Si un atacante proporciona una ruta absoluta (por ejemplo, /etc/passwd) en el encabezado tar, node-tar la resuelve a la raíz del sistema en lugar del directorio de extracción.
El poc.js incluido genera un archivo malicioso e intenta sobrescribir un archivo local secret.txt.
Instalar la versión vulnerable:
npm install [email protected]
Ejecutar el generador de exploits:
node poc.js
Salida:
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
Parcheado en v7.5.3. La actualización añade stripAbsolutePath() para sanitizar los destinos de enlaces antes de la resolución.
Referencias: