
Preuve de concept d'exploitation pour CVE-2026-23745, une vulnérabilité de traversée de chemin dans node-tar permettant l'écrasement arbitraire de fichiers via des archives tar malveillantes.
Recherche : Joshua van Rijswijk
PoC pour CVE-2026-23745, une vulnérabilité de traversée de chemin de gravité élevée dans node-tar ( <7.5.2).
La bibliothèque ne parvient pas à assainir les chemins absolus dans le champ linkpath pour les liens physiques (hardlinks) et les liens symboliques (symlinks). Cela permet à des archives tar malveillantes de contourner la racine d'extraction et d'écraser des fichiers arbitraires sur le système hôte, même lorsque preservePaths: false est défini.
Située dans src/unpack.ts. La bibliothèque utilise path.resolve() sur des entrées utilisateur non assainies :
// Le bug : path.resolve ignore 'cwd' si le second argument est absolu
const target = path.resolve(this.cwd, String(entry.linkpath))
Si un attaquant fournit un chemin absolu (par exemple, /etc/passwd) dans l'en-tête tar, node-tar le résout vers la racine du système au lieu du répertoire d'extraction.
Le fichier poc.js inclus génère une archive malveillante et tente d'écraser un fichier local secret.txt.
Installer la version vulnérable :
npm install [email protected]
Exécuter le générateur d'exploit :
node poc.js
Sortie :
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
Corrigé dans la v7.5.3. La mise à jour ajoute stripAbsolutePath() pour assainir les cibles de liens avant la résolution.
Références :