
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 notevolmente lo sviluppo, richiedono anche una manutenzione continua per garantire che le vulnerabilità di sicurezza vengano affrontate tempestivamente. Nel 2013, “Using Components with Known Vulnerabilities” è stata aggiunta alla lista OWASP Top 10 dei rischi critici per la sicurezza, evidenziando la seria minaccia che le 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 sono presenti nei manifest dei pacchetti, ma che 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 OWASP ZAP Add-on
- Come estensione Firefox - Deprecata Faccelo sapere se vuoi mantenerla e rimuoverne la deprecazione.
- Uno scanner headless per siti web
- Come plugin grunt (deprecato)
- Come task gulp (deprecato)
Scanner da riga di comando
Scansiona un'app web o un'app Node per individuare l'uso di librerie JavaScript vulnerabili e/o moduli Node.js. Se non l'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
cyclonedx produce CycloneDX 1.4 XML. Per JSON e versioni più recenti della specifica, usa cyclonedxJSON (1.4), cyclonedxJSON1_6 o cyclonedxJSON1_7. Le varianti cyclonedxJSON1_6_VEX e cyclonedxJSON1_7_VEX includono anche una sezione vulnerabilities.
Per impostazione predefinita, retire.js termina con il codice 13 se trova vulnerabilità. Questo comportamento può essere sovrascritto con --exitwith 0.
Estensioni Chrome e Firefox
Scansiona i siti visitati per individuare riferimenti a librerie non sicure e mostra avvisi nella console degli sviluppatori. Un'icona nella barra degli indirizzi indica 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 di default nelle release settimanali di ZAP: https://www.zaproxy.org/docs/desktop/addons/retire.js/
Scanner headless per siti web
Il retire-site-scanner https://github.com/RetireJS/retire-site-scanner può essere utilizzato per scansionare un sito web in modalità headless (in alternativa all'uso delle 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 utilizzabile nel tuo gulpfile per osservare e scansionare automaticamente i file del progetto. Puoi modificare i pattern di watch e le opzioni (facoltative) 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à.
