返回更新列表
新发布Aug 21, 2026

retire.js v5.5.0

用于检测使用已知漏洞JavaScript库的扫描器。还可以生成它所找到库的SBOM。

分享

Retire.js

你所依赖的,也必须退役

存在一个庞大的 JavaScript 库生态系统,可用于 Web 和 Node.js 应用程序。虽然这些库显著加速了开发,但它们也需要持续维护,以确保安全漏洞得到及时处理。2013 年,“使用含有已知漏洞的组件”被列入 OWASP Top 10 关键安全风险列表,凸显了过时或不安全的依赖项可能对 Web 应用程序构成的严重威胁。Retire.js 的创建就是为了帮助开发者识别具有已知漏洞的 JavaScript 库版本,尤其是那些不在包清单中、而只是下载并放入源码控制的库。

Retire.js 可以通过多种方式使用:

  1. 作为命令行扫描器
  2. 作为 Chrome 扩展 - 并非在 Chrome 网上应用店官方提供
  3. 作为 Burp 扩展OWASP ZAP 插件
  4. 作为 Firefox 扩展 - 已弃用 如果您想维护并取消弃用,请告诉我们。
  5. 无头网站扫描器
  6. 作为 grunt 插件(已弃用)
  7. 作为 gulp 任务(已弃用)

命令行扫描器

扫描 Web 应用或 Node 应用中使用的易受攻击的 JavaScript 库和/或 Node.JS 模块。如果尚未安装,您需要先安装 node/npm。在应用程序文件夹的源代码文件夹中运行:

$ npm install -g retire
$ retire

SBOM 生成

retire.js 可以生成 CycloneDX 格式的 SBOM:

$ retire --outputformat cyclonedx

cyclonedx 生成 CycloneDX 1.4 XML。对于 JSON 以及更新的规范版本,请使用 cyclonedxJSON (1.4)、cyclonedxJSON1_6cyclonedxJSON1_7cyclonedxJSON1_6_VEXcyclonedxJSON1_7_VEX 变体还包含 vulnerabilities 部分。

默认情况下,如果 retire.js 发现漏洞,将以退出码 13 结束。可以使用 --exitwith 0 覆盖此行为。

Chrome 和 Firefox 扩展

扫描已访问站点中对不安全库的引用,并在开发者控制台中显示警告。地址栏上的图标也会指示是否加载了易受攻击的库。

Burp 扩展和 OWASP ZAP 插件

@h3xstream 已将 Retire.js 改编为渗透测试工具 BurpOWASP ZAP插件

OWASP ZAP 团队官方支持 Retire.js 插件,该插件可通过 ZAP Marketplace 获取,并默认包含在 ZAP 每周版本中:https://www.zaproxy.org/docs/desktop/addons/retire.js/

无头站点扫描器

retire-site-scanner https://github.com/RetireJS/retire-site-scanner 可用于在无头模式下扫描网站(与使用 Chrome/Firefox 扩展相反)。

Grunt 插件(已弃用)

作为应用程序构建例程或其他自动化工作流的一部分,用于运行 Retire.js 的 Grunt 任务

Gulp 任务(已弃用)

这是一个 Gulp 任务示例,可在您的 gulpfile 中使用,以自动监视和扫描项目文件。您可以根据需要修改监视模式以及(可选的)Retire.js 选项。

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();
  });
});

捐赠

捐款将用于资助该工具和漏洞仓库的维护。

分类