
Proof-of-concept che dimostra un path traversal tramite hardlink nel pacchetto npm tar, consentendo la sovrascrittura di file al di fuori della directory di estrazione tramite archivi appositamente creati.
Ricerca: Joshua van Rijswijk
Questo repository contiene una Proof of Concept (PoC) per CVE-2026-29786, una vulnerabilità nel pacchetto npm tar che consente a un archivio appositamente creato di generare un hardlink che punta all'esterno della directory di estrazione prevista.
Il problema si verifica quando un archivio tar contiene un target di link relativo all'unità come C:../target.txt. A causa dell'ordine in cui la libreria esegue la validazione e la normalizzazione dei percorsi durante l'estrazione, la protezione contro il traversal può essere aggirata.
Dopo la normalizzazione, il percorso diventa ../target.txt, consentendo al target del link di fuoriuscire dalla directory di estrazione configurata.
Quando il file estratto viene scritto, il file esterno viene modificato perché entrambi i percorsi fanno riferimento allo stesso hardlink.
La vulnerabilità si verifica nella logica di estrazione responsabile della gestione dei percorsi assoluti (Unpack[STRIPABSOLUTEPATH]).
Il rilevamento del traversal viene eseguito prima della rimozione del percorso assoluto.
Esempio di valore di header dannoso
linkpath: C:../target.txt
Comportamento di elaborazione:
Il percorso viene suddiviso in segmenti per il rilevamento del traversal.
Il controllo del traversal cerca i segmenti "..".
Poiché il segmento appare come "C:..", il controllo non viene attivato.
La funzione stripAbsolutePath() rimuove successivamente il prefisso dell'unità (C:).
Il percorso risultante diventa:
../target.txt
Ciò consente al percorso di fuoriuscire dalla root di estrazione prevista.
Un attaccante può sovrascrivere file all'esterno della directory di estrazione con i privilegi del processo che esegue l'estrazione.
I potenziali scenari reali includono:
• Strumenti CLI che estraggono archivi tar non attendibili • Pipeline di build che elaborano artefatti di terze parti • Servizi che importano file tar forniti dall'utente • Gestori di pacchetti o sistemi di plugin che decomprimono archivi
npm install [email protected]
node poc.cjs
Lo script genera un archivio tar dannoso e dimostra che la scrittura sul file estratto comporta la sovrascrittura di un file all'esterno della directory di estrazione.