retire.js: detectando dependências JavaScript vulneráveis
retire.js · Apache-2.0
O retire.js identifica bibliotecas JavaScript com vulnerabilidades conhecidas. Ele fingerprinta versões de biblioteca a partir do conteúdo de arquivos e URLs, depois as compara contra um banco de vulnerabilidades. É uma das poucas verificações que funciona igualmente bem de fora — você não precisa do repositório de código, só do bundle que o site serve.
Instalação
npm install -g retire Comandos principais
# um diretório de projeto
retire --path ./frontend
# só JavaScript, ignora node_modules
retire --path ./frontend --js --ignore node_modules
# JSON para importar
retire --path ./frontend --outputformat json --outputpath retire.json
# limiar de severidade
retire --path ./frontend --severity high Para varredura remota, baixe os bundles primeiro e varra o diretório — a extensão de navegador cobre verificações pontuais mas não roteiriza bem.
Saída
{"file":"static/jquery-1.8.3.min.js","results":[{"component":"jquery","version":"1.8.3",
"vulnerabilities":[{"severity":"medium","identifiers":{"CVE":["CVE-2015-9251"]},
"info":["https://github.com/jquery/jquery/issues/2432"]}]}]} Onde ele entra no Tandera
O retire.js roda na fase de analyze do recon_web_lite e do recon_web_full, contra os assets JavaScript recuperados durante o crawl. Como não precisa de payloads ativos, é permitido no fluxo lite NonIntrusive.
Seus identificadores de CVE mapeiam para o catálogo de findings, então uma biblioteca vulnerável vira um finding com CVE, uma pontuação CVSS e contexto EPSS em vez de uma string bruta de versão.
Usando em um pentest
Findings baseados em versão precisam de contexto de explorabilidade ou são ruído. “jQuery 1.8.3 tem CVE-2015-9251” é verdade e quase inútil sozinho. O cliente precisa saber se o caminho de código vulnerável é alcançável nesta aplicação. Verifique antes de atribuir uma severidade.
Verifique a CDN, não só o bundle. Aplicações frequentemente carregam um framework moderno localmente e uma biblioteca utilitária antiga de uma CDN. A cópia da CDN é a que ninguém acompanha.
Prefira a versão ao CVE na remediação. “Atualize o jQuery para 3.5.0 ou superior” é acionável. Uma lista de identificadores de CVE é uma tarefa de pesquisa que você está devolvendo ao cliente.