
retire.js v5.5.0
scanner détectant l'utilisation de bibliothèques JavaScript présentant des vulnérabilités connues. Peut également générer un SBOM des bibliothèques qu'il trouve.
Retire.js
Ce que vous requérez, vous devez aussi le retirer
Il existe un vaste écosystème de bibliothèques JavaScript disponibles pour les applications web et Node.js. Bien que ces bibliothèques accélèrent considérablement le développement, elles nécessitent également une maintenance continue pour garantir que les vulnérabilités de sécurité soient corrigées rapidement. En 2013, “Using Components with Known Vulnerabilities” a été ajouté à la liste OWASP Top 10 des risques de sécurité critiques, soulignant la grave menace que des dépendances obsolètes ou non sécurisées peuvent représenter pour les applications web. Retire.js a été créé pour aider les développeurs à identifier les versions de bibliothèques JavaScript présentant des vulnérabilités connues, en particulier celles qui ne figurent pas dans les manifestes de paquets, mais qui sont simplement téléchargées et placées dans le contrôle de version.
Retire.js peut être utilisé de nombreuses manières :
- Comme scanner en ligne de commande
- Comme extension Chrome - Non officiellement disponible dans le Chrome Web Store
- Comme extension Burp ou module complémentaire OWASP ZAP
- Comme extension Firefox - Obsolète Faites-nous savoir si vous souhaitez la maintenir et la réactiver.
- Un scanner de site web headless
- Comme plugin grunt (obsolète)
- Comme tâche gulp (obsolète)
Scanner en ligne de commande
Analysez une application web ou une application Node.js pour détecter l'utilisation de bibliothèques JavaScript vulnérables et/ou de modules Node.js. Si ce n'est pas déjà fait, vous devez d'abord installer node/npm. Dans le dossier du code source de l'application, exécutez :
$ npm install -g retire
$ retire
Génération de SBOM
retire.js peut générer des SBOM au format CycloneDX :
$ retire --outputformat cyclonedx
cyclonedx produit du XML CycloneDX 1.4. Pour le JSON, et pour les versions plus récentes de la spécification, utilisez cyclonedxJSON (1.4), cyclonedxJSON1_6 ou cyclonedxJSON1_7. Les variantes cyclonedxJSON1_6_VEX et cyclonedxJSON1_7_VEX incluent également une section vulnerabilities.
Par défaut, retire.js se termine avec le code 13 s'il trouve des vulnérabilités. Ce comportement peut être remplacé avec --exitwith 0.
Extensions Chrome et Firefox
Les extensions analysent les sites visités pour détecter les références à des bibliothèques non sécurisées et affichent des avertissements dans la console du développeur. Une icône dans la barre d'adresse indiquera également si des bibliothèques vulnérables ont été chargées.
Extension Burp et module complémentaire OWASP ZAP
@h3xstream a adapté Retire.js en plugin pour les outils de test d'intrusion Burp et OWASP ZAP.
L'équipe OWASP ZAP prend officiellement en charge un module complémentaire Retire.js disponible via le ZAP Marketplace et inclus par défaut dans les versions hebdomadaires de ZAP : https://www.zaproxy.org/docs/desktop/addons/retire.js/
Scanner de site web headless
Le retire-site-scanner https://github.com/RetireJS/retire-site-scanner peut être utilisé pour analyser un site web en mode headless (par opposition à l'utilisation des extensions Chrome/Firefox).
Plugin Grunt (obsolète)
Une tâche Grunt pour exécuter Retire.js dans le cadre de la routine de build de votre application, ou d'un autre flux de travail automatisé.
Tâche Gulp (obsolète)
Un exemple de tâche Gulp qui peut être utilisée dans votre gulpfile pour surveiller et analyser automatiquement les fichiers de votre projet. Vous pouvez modifier les motifs de surveillance et les options (facultatives) de Retire.js comme bon vous semble.
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();
});
});
Faire un don
Les dons serviront à financer la maintenance de l'outil et du référentiel de vulnérabilités.
