
Preuve de concept démontrant un path traversal par hardlink dans le paquet npm tar, permettant l'écrasement de fichiers en dehors du répertoire d'extraction via des archives malveillantes.
Recherche : Joshua van Rijswijk
Ce dépôt contient une Preuve de Concept (PoC) pour CVE-2026-29786, une vulnérabilité dans le paquet npm tar qui permet à une archive conçue de créer un lien physique (hardlink) pointant en dehors du répertoire d'extraction prévu.
Le problème survient lorsqu'une archive tar contient une cible de lien relative au lecteur telle que C:../target.txt. En raison de l'ordre dans lequel la bibliothèque effectue la validation et la normalisation des chemins lors de l'extraction, la protection contre le traversement de répertoire peut être contournée.
Après normalisation, le chemin devient ../target.txt, ce qui permet à la cible du lien de s'échapper du répertoire d'extraction configuré.
Lorsque le fichier extrait est écrit, le fichier externe est modifié car les deux chemins référencent le même lien physique.
La vulnérabilité se produit dans la logique d'extraction chargée de gérer les chemins absolus (Unpack[STRIPABSOLUTEPATH]).
La détection du traversement est effectuée avant la suppression du chemin absolu.
Exemple de valeur d'en-tête malveillante
linkpath: C:../target.txt
Comportement du traitement :
Le chemin est divisé en segments pour la détection du traversement.
La vérification du traversement recherche les segments "..".
Comme le segment apparaît sous la forme "C:..", la vérification ne se déclenche pas.
La fonction stripAbsolutePath() supprime ensuite le préfixe du lecteur (C:).
Le chemin résultant devient :
../target.txt
Cela permet au chemin de s'échapper de la racine d'extraction prévue.
Un attaquant peut écraser des fichiers en dehors du répertoire d'extraction avec les privilèges du processus effectuant l'extraction.
Les scénarios réels potentiels incluent :
• les outils CLI extrayant des archives tar non fiables • les pipelines de build traitant des artefacts tiers • les services important des fichiers tar fournis par l'utilisateur • les gestionnaires de paquets ou systèmes de plugins décompressant des archives
npm install [email protected]
node poc.cjs
Le script génère une archive tar malveillante et démontre que l'écriture dans le fichier extrait entraîne l'écrasement d'un fichier situé en dehors du répertoire d'extraction.