
Aviso para textract ⌯⌲ 15 000 downloads semanais
O textract até a versão 2.5.0 permite injeção de comandos do sistema
operacional por meio do caminho do arquivo fornecido a vários extratores.
Vários caminhos de código passam esse caminho de arquivo para
child_process.exec() com sanitização inadequada. Um atacante que possa
influenciar o nome ou o caminho do arquivo pode sair da linha de comando
e executar comandos arbitrários no host.
| Produto | Versões afetadas | Versão corrigida |
|---|
| textract | todas as versões até 2.5.0 | nenhuma correção disponível até 2026-03-24 |
CVE-2026-26831CWE-78 - Injeção de comandos do SO9.8 (Crítico)CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:Hlib/extractors/doc.jslib/extractors/rtf.jslib/extractors/dxf.jslib/extractors/images.jslib/util.jsUm exemplo é o extrator doc.js:
exec('antiword -m UTF-8.txt "' + filePath + '"', ...)
Outro é o tratamento do caminho em rtf.js, que apenas escapa espaços
antes de executar o comando shell. Isso não impede metacaracteres
como ;, crases ou $().
Aplicações costumam usar textract em documentos enviados por usuários.
Nesse cenário, um nome de arquivo malicioso pode acionar a execução de
comandos durante a extração de texto.
Um nome de arquivo de entrada como:
test";whoami;".doc
pode sair da string de comando entre aspas quando o extrator vulnerável é executado.
Nenhuma versão corrigida no npm está disponível no momento em que este texto foi escrito.
Se você ainda depende deste pacote:
textract.exec() por execução de processos segura quanto a argumentos.