
Prova de conceito de exploit para CVE-2026-23745, uma vulnerabilidade de path traversal no node-tar que permite a sobrescrita arbitrária de arquivos por meio de arquivos tar maliciosos.
Pesquisa: Joshua van Rijswijk
PoC para CVE-2026-23745, uma vulnerabilidade de travessia de caminho de alta gravidade no node-tar ( <7.5.2).
A biblioteca não sanitiza caminhos absolutos no campo linkpath para Hardlinks e Symlinks. Isso permite que arquivos tar maliciosos contornem a raiz de extração e sobrescrevam arquivos arbitrários no sistema host, mesmo quando preservePaths: false está definido.
Localizada em src/unpack.ts. A biblioteca usa path.resolve() em entrada de usuário não sanitizada:
// O bug: path.resolve ignora 'cwd' se o segundo argumento for absoluto
const target = path.resolve(this.cwd, String(entry.linkpath))
Se um atacante fornecer um caminho absoluto (por exemplo, /etc/passwd) no cabeçalho do tar, o node-tar o resolve para a raiz do sistema em vez do diretório de extração.
O poc.js incluído gera um arquivo malicioso e tenta sobrescrever um arquivo local secret.txt.
Instale a versão vulnerável:
npm install [email protected]
Execute o gerador de exploit:
node poc.js
Saída:
[+] VULN CONFIRMED: Hardlink overwrite successful
Target file content changed to: OVERWRITTEN
Corrigido na v7.5.3. A atualização adiciona stripAbsolutePath() para sanitizar os alvos de link antes da resolução.
Referências: