
retire.js v5.5.0
scanner che rileva l'uso di librerie JavaScript con vulnerabilità note. Può anche generare un SBOM delle librerie che trova.
Retire.js
Ciò che richiedi, devi anche ritirare
Esiste un vasto ecosistema di librerie JavaScript disponibili sia per applicazioni web che Node.js. Sebbene queste librerie accelerino significativamente lo sviluppo, richiedono anche una manutenzione continua per garantire che le vulnerabilità di sicurezza vengano affrontate tempestivamente. Nel 2013, "Utilizzo di componenti con vulnerabilità note" è stato aggiunto alla lista OWASP Top 10 dei rischi critici per la sicurezza, evidenziando la seria minaccia che dipendenze obsolete o insicure possono rappresentare per le applicazioni web. Retire.js è stato creato per aiutare gli sviluppatori a identificare versioni di librerie JavaScript con vulnerabilità note, in particolare quelle che non si trovano nei manifest dei pacchetti, ma sono semplicemente scaricate e inserite nel controllo versione.
Retire.js può essere utilizzato in molti modi:
- Come scanner da riga di comando
- Come estensione Chrome - Non disponibile ufficialmente nel Chrome Web Store
- Come estensione Burp o Add-on OWASP ZAP
- Come estensione Firefox - Deprecata Fateci sapere se volete mantenerla e rimuovere la deprecazione.
- Uno scanner di siti web headless
- Come plugin Grunt (deprecato)
- Come task Gulp (deprecato)
Scanner da riga di comando
Scansiona un'app web o Node per l'uso di librerie JavaScript vulnerabili e/o moduli Node.JS. Se non lo hai già fatto, devi prima installare node/npm. Nella cartella del codice sorgente dell'applicazione esegui:
$ npm install -g retire
$ retire
Generazione SBOM
retire.js può generare SBOM nel formato CycloneDX:
$ retire --outputformat cyclonedx
Per impostazione predefinita, retire.js esce con codice 13 se trova vulnerabilità. Questo può essere sovrascritto con --exitwith 0.
Estensioni Chrome e Firefox
Scansiona i siti visitati per riferimenti a librerie non sicure e inserisce avvisi nella console sviluppatore. Un'icona sulla barra degli indirizzi indicherà anche se sono state caricate librerie vulnerabili.
Estensione Burp e Add-on OWASP ZAP
@h3xstream ha adattato Retire.js come plugin per gli strumenti di penetration testing Burp e OWASP ZAP.
Il team di OWASP ZAP supporta ufficialmente un add-on Retire.js disponibile tramite ZAP Marketplace e incluso per impostazione predefinita nelle versioni settimanali di ZAP: https://www.zaproxy.org/docs/desktop/addons/retire.js/
Scanner di siti headless
Il retire-site-scanner https://github.com/RetireJS/retire-site-scanner può essere utilizzato per scansionare un sito web in modalità headless (invece di usare le estensioni Chrome/Firefox)
Plugin Grunt (deprecato)
Un task Grunt per eseguire Retire.js come parte della routine di build dell'applicazione o di un altro flusso di lavoro automatizzato.
Task Gulp (deprecato)
Un esempio di task Gulp che può essere utilizzato nel tuo gulpfile per osservare e scansionare automaticamente i file del progetto. Puoi modificare i pattern di osservazione e le opzioni (opzionali) di Retire.js come preferisci.
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();
});
});
Dona
Le donazioni saranno utilizzate per finanziare la manutenzione dello strumento e del repository delle vulnerabilità.
