node-tar Vulnerável à Criação/Sobrescrita Arbitrária de Arquivos via Path Traversal de Hardlink
Plataforma
nodejs
Componente
tar
Corrigido em
7.5.7
### Resumo node-tar contém uma vulnerabilidade onde a verificação de segurança para entradas de hardlink usa semânticas de resolução de caminho diferentes da lógica real de criação de hardlink. Essa incompatibilidade permite que um invasor crie um arquivo TAR malicioso que ignora as proteções de path traversal e cria hardlinks para arquivos arbitrários fora do diretório de extração. ### Detalhes A vulnerabilidade existe em `lib/unpack.js`. Ao extrair um hardlink, duas funções lidam com o linkpath de forma diferente: **Verificação de segurança em `[STRIPABSOLUTEPATH]`:** ```javascript const entryDir = path.posix.dirname(entry.path); const resolved = path.posix.normalize(path.posix.join(entryDir, linkpath)); if (resolved.startsWith('../')) { /* block */ } ``` **Criação de Hardlink em `[HARDLINK]`:** ```javascript const linkpath = path.resolve(this.cwd, entry.linkpath); fs.linkSync(linkpath, dest); ``` **Exemplo:** Uma aplicação extrai um TAR usando `tar.extract({ cwd: '/var/app/uploads/' })`. O TAR contém a entrada `a/b/c/d/x` como um hardlink para `../../../../etc/passwd`. - **Verificação de segurança** resolve o linkpath relativo ao diretório pai da entrada: `a/b/c/d/ + ../../../../etc/passwd` = `etc/passwd`. Sem prefixo `../`, então
Como corrigir
Nenhum patch oficial disponível. Procure alternativas ou monitore atualizações.
Monitore suas dependências automaticamente
Receba alertas quando novas vulnerabilidades afetarem seus projetos.
Começar grátis