
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.
Ce que vous utilisez, 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 rapidement corrigées. En 2013, « Utilisation de composants avec des vulnérabilités connues » a été ajouté à la liste OWASP Top 10 des risques de sécurité critiques, soulignant la menace sérieuse que des dépendances obsolètes ou non sécurisées peuvent poser aux 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 manifests de paquets, mais qui sont simplement téléchargées et placées dans le contrôle de source.
Retire.js peut être utilisé de plusieurs manières :
Scannez une application web ou une application Node 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
retire.js peut générer des SBOM au format CycloneDX :
$ retire --outputformat cyclonedx
Par défaut, retire.js se termine avec le code 13 s'il trouve des vulnérabilités. Cela peut être remplacé par --exitwith 0.
Analyse les sites visités à la recherche de références à des bibliothèques non sécurisées et place des avertissements dans la console développeur. Une icône dans la barre d'adresse indiquera également si des bibliothèques vulnérables ont été chargées.
@h3xstream a adapté Retire.js en tant que plugin pour les outils de test d'intrusion Burp et OWASP ZAP.
L'équipe OWASP ZAP prend officiellement en charge un add-on Retire.js qui est 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/
Le retire-site-scanner https://github.com/RetireJS/retire-site-scanner peut être utilisé pour analyser un site web en mode sans tête (par opposition à l'utilisation des extensions Chrome/Firefox)
Une tâche Grunt pour exécuter Retire.js dans le cadre de la routine de construction de votre application, ou d'un autre flux de travail automatisé.
Un exemple de tâche Gulp qui peut être utilisée dans votre gulpfile pour surveiller et analyser automatiquement vos fichiers de projet. Vous pouvez modifier les motifs de surveillance et les options (facultatives) de Retire.js comme vous le souhaitez.
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();
});
});
Les dons seront utilisés pour financer la maintenance de l'outil et du référentiel de vulnérabilités.