Voltar às atualizações
New releaseAug 21, 2026

retire.js v5.5.0

scanner que detecta o uso de bibliotecas JavaScript com vulnerabilidades conhecidas. Também pode gerar um SBOM das bibliotecas que encontra.

Compartilhar

Retire.js

O que você usa, também deve aposentar

Há um vasto ecossistema de bibliotecas JavaScript disponível para aplicações web e Node.js. Embora essas bibliotecas acelerem significativamente o desenvolvimento, elas também exigem manutenção contínua para garantir que vulnerabilidades de segurança sejam corrigidas prontamente. Em 2013, "Using Components with Known Vulnerabilities" foi adicionado à lista do OWASP Top 10 de riscos críticos de segurança, destacando a grave ameaça que dependências desatualizadas ou inseguras podem representar para aplicações web. O Retire.js foi criado para ajudar desenvolvedores a identificar versões de bibliotecas JavaScript com vulnerabilidades conhecidas, especialmente aquelas que não estão nos manifestos de pacotes, mas simplesmente baixadas e colocadas no controle de versão.

O Retire.js pode ser usado de muitas maneiras:

  1. Como scanner de linha de comando
  2. Como uma extensão do Chrome - Não disponível oficialmente na Chrome Web Store
  3. Como uma extensão Burp ou Add-on OWASP ZAP
  4. Como uma extensão do Firefox - Obsoleto Avise-nos se você quiser mantê-la e reativá-la.
  5. Um scanner headless de sites
  6. Como um plugin do Grunt (obsoleto)
  7. Como uma tarefa do Gulp (obsoleta)

Scanner de linha de comando

Examine um aplicativo web ou Node em busca de uso de bibliotecas JavaScript vulneráveis e/ou módulos Node.JS. Se ainda não o fez, você precisa instalar o node/npm primeiro. Na pasta do código-fonte do aplicativo, execute:

$ npm install -g retire
$ retire

Geração de SBOM

O retire.js pode gerar SBOMs no formato CycloneDX:

$ retire --outputformat cyclonedx

cyclonedx produz XML CycloneDX 1.4. Para JSON e versões mais recentes da especificação, use cyclonedxJSON (1.4), cyclonedxJSON1_6 ou cyclonedxJSON1_7. As variantes cyclonedxJSON1_6_VEX e cyclonedxJSON1_7_VEX também incluem uma seção vulnerabilities.

Por padrão, o retire.js encerrará com o código 13 se encontrar vulnerabilidades. Isso pode ser substituído com --exitwith 0.

Extensões para Chrome e Firefox

Examina os sites visitados em busca de referências a bibliotecas inseguras e coloca avisos no console do desenvolvedor. Um ícone na barra de endereço também indicará se bibliotecas vulneráveis foram carregadas.

Extensão Burp e Add-on OWASP ZAP

O @h3xstream adaptou o Retire.js como um plugin para as ferramentas de teste de penetração Burp e OWASP ZAP.

A equipe do OWASP ZAP oferece suporte oficial a um add-on do Retire.js que está disponível via ZAP Marketplace e é incluído por padrão nos lançamentos semanais do ZAP: https://www.zaproxy.org/docs/desktop/addons/retire.js/

Scanner headless de sites

O retire-site-scanner https://github.com/RetireJS/retire-site-scanner pode ser usado para escanear um site em modo headless (em vez de usar as extensões do Chrome/Firefox).

Plugin Grunt (obsoleto)

Uma tarefa do Grunt para executar o Retire.js como parte da rotina de build da sua aplicação, ou de algum outro fluxo de trabalho automatizado.

Tarefa Gulp (obsoleta)

Um exemplo de tarefa do Gulp que pode ser usada no seu gulpfile para monitorar e escanear automaticamente os arquivos do seu projeto. Você pode modificar os padrões de observação (watch) e as opções (opcionais) do Retire.js como preferir.

const c = require("ansi-colors");

var gulp = require("gulp");
var beeper = require("beeper");
var log = require("fancy-log");
var spawn = require("child_process").spawn;

gulp.task("retire:watch", ["retire"], function (done) {
  // Watch all javascript files and package.json
  gulp.watch(["js/**/*.js", "package.json"], ["retire"]);
});

gulp.task("retire", function () {
  // Spawn Retire.js as a child process
  // You can optionally add option parameters to the second argument (array)
  var child = spawn("retire", [], { cwd: process.cwd() });

  child.stdout.setEncoding("utf8");
  child.stdout.on("data", function (data) {
    log(data);
  });

  child.stderr.setEncoding("utf8");
  child.stderr.on("data", function (data) {
    log(c.red(data));
    beeper();
  });
});

Doações

As doações serão usadas para financiar a manutenção da ferramenta e do repositório de vulnerabilidades.

Categorias