
retire.js v5.5.0
сканер, обнаруживающий использование библиотек JavaScript с известными уязвимостями. Также может генерировать SBOM найденных библиотек.
Retire.js
Что вы используете, то и должно быть удалено
Существует огромная экосистема JavaScript-библиотек, доступных как для веб-приложений, так и для Node.js. Хотя эти библиотеки значительно ускоряют разработку, они также требуют постоянного обслуживания, чтобы своевременно устранять уязвимости безопасности. В 2013 году «Использование компонентов с известными уязвимостями» было добавлено в список OWASP Top 10 критических рисков безопасности, подчёркивая серьёзную угрозу, которую устаревшие или небезопасные зависимости могут представлять для веб-приложений. Retire.js был создан, чтобы помочь разработчикам выявлять версии JavaScript-библиотек с известными уязвимостями, особенно те, которые не указаны в манифестах пакетов, а просто загружены и помещены в систему контроля версий.
Retire.js можно использовать разными способами:
- В качестве сканера командной строки
- В качестве расширения Chrome — Не доступен официально в Chrome Web Store
- В качестве расширения Burp или дополнения OWASP ZAP
- В качестве расширения Firefox — Устарело. Сообщите нам, если хотите поддерживать и вернуть его.
- Безголовый сканер веб-сайта
- В качестве плагина grunt (устарело)
- В качестве задачи gulp (устарело)
Сканер командной строки
Сканируйте веб-приложение или Node-приложение на предмет использования уязвимых JavaScript-библиотек и/или модулей Node.JS. Если вы ещё не сделали этого, сначала установите node/npm. В папке с исходным кодом приложения выполните:
$ npm install -g retire
$ retire
Генерация SBOM
retire.js может генерировать SBOM в формате CycloneDX:
$ retire --outputformat cyclonedx
По умолчанию retire.js завершает работу с кодом 13, если находит уязвимости. Это можно переопределить с помощью --exitwith 0.
Расширения для Chrome и Firefox
Сканируют посещаемые сайты на наличие ссылок на небезопасные библиотеки и выводят предупреждения в консоль разработчика. Иконка на панели адреса также будет указывать, были ли загружены уязвимые библиотеки.
Расширение Burp и дополнение OWASP ZAP
@h3xstream адаптировал Retire.js в качестве плагина для инструментов тестирования на проникновение Burp и OWASP 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 (устарело)
Задача Grunt для запуска Retire.js как часть процесса сборки вашего приложения или другого автоматизированного рабочего процесса.
Задача 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();
});
});
Пожертвования
Пожертвования будут использованы для финансирования поддержки инструмента и репозитория уязвимостей.
