
retire.js v5.5.0
用于检测使用已知漏洞JavaScript库的扫描器。还可以生成它所找到库的SBOM。
Retire.js
你所需的,也终需退休
在Web和Node.js应用开发中,存在一个庞大的JavaScript库生态系统。虽然这些库能显著加速开发,但也需要持续维护以确保安全漏洞能及时修补。2013年,"使用含有已知漏洞的组件"被列入OWASP十大关键安全风险列表,凸显了过时或不安全的依赖项对Web应用的严重威胁。Retire.js 旨在帮助开发者识别含有已知漏洞的JavaScript库版本,特别是那些未在包清单中记录,而是直接下载并放入版本控制的库。
Retire.js 可通过多种方式使用:
- 作为命令行扫描器
- 作为Chrome扩展程序 - 官方未在Chrome网上应用店提供
- 作为Burp扩展 或 OWASP ZAP附加组件
- 作为Firefox扩展程序 - 已弃用 如果你想维护并重新启用它,请告知我们。
- 无头网站扫描器
- 作为grunt插件(已弃用)
- 作为gulp任务(已弃用)
命令行扫描器
扫描Web应用或Node应用,检测是否使用了存在漏洞的JavaScript库和/或Node.js模块。如果尚未安装,需要先安装node/npm。在应用的源代码目录中运行:
$ npm install -g retire
$ retire
SBOM生成
retire.js 可以生成CycloneDX格式的SBOM:
$ retire --outputformat cyclonedx
默认情况下,retire.js 在发现漏洞时会以退出码13退出。可以通过 --exitwith 0 覆盖此行为。
Chrome和Firefox扩展程序
扫描访问过的站点,查找对不安全库的引用,并在开发者控制台中显示警告。地址栏上的图标也会指示是否加载了存在漏洞的库。
Burp扩展和OWASP ZAP附加组件
@h3xstream 已将 Retire.js 改编为渗透测试工具 Burp 和 OWASP ZAP 的插件。
OWASP ZAP 团队官方支持一个 Retire.js 附加组件,可通过 ZAP 市场获取,并默认包含在 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) {
// 监视所有JavaScript文件和package.json
gulp.watch(["js/**/*.js", "package.json"], ["retire"]);
});
gulp.task("retire", function () {
// 作为子进程启动Retire.js
// 可选的参数可以添加到第二个参数(数组)
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();
});
});
捐赠
捐款将用于资助该工具及漏洞仓库的维护。
