
retire.js v5.5.0
既知の脆弱性があるJavaScriptライブラリの使用を検出するスキャナー。見つけたライブラリのSBOMも生成できます。
Retire.js
必要とするものは、退職させなければならない
Web アプリケーションと Node.js アプリケーションの両方で利用できる JavaScript ライブラリのエコシステムは非常に大きくなっています。これらのライブラリは開発を大幅に加速させますが、セキュリティの脆弱性に迅速に対処するための継続的なメンテナンスも必要とします。2013 年には、「既知の脆弱性のあるコンポーネントの使用」が OWASP Top 10 の重大なセキュリティリスクのリストに追加され、古い依存関係や安全でない依存関係が Web アプリケーションにもたらす深刻な脅威が浮き彫りになりました。Retire.js は、特にパッケージマニフェストには記載されず、単にダウンロードされてソース管理に置かれている JavaScript ライブラリについて、既知の脆弱性のあるバージョンを開発者が特定できるようにするために作成されました。
Retire.js はさまざまな方法で使用できます:
- コマンドラインスキャナーとして
- Chrome 拡張機能として - 公式には Chrome ウェブストアでは提供されていません
- Burp 拡張機能として または OWASP ZAP アドオンとして
- Firefox 拡張機能として - 非推奨 保守を希望し、非推奨を解除したい場合はお知らせください。
- ヘッドレス Web サイトスキャナー
- grunt プラグインとして(非推奨)
- gulp タスクとして(非推奨)
コマンドラインスキャナー
Web アプリケーションや Node アプリケーションをスキャンして、脆弱な JavaScript ライブラリや Node.JS モジュールを使用していないか確認します。まだの場合は、先に node/npm をインストール する必要があります。アプリケーションフォルダ内のソースコードフォルダで次を実行してください:
$ npm install -g retire
$ retire
SBOM 生成
retire.js は CycloneDX 形式で SBOM を生成できます:
$ retire --outputformat cyclonedx
cyclonedx は CycloneDX 1.4 XML を生成します。JSON や新しい仕様バージョンを使用する場合は、cyclonedxJSON(1.4)、cyclonedxJSON1_6、または cyclonedxJSON1_7 を使用してください。cyclonedxJSON1_6_VEX と cyclonedxJSON1_7_VEX のバリアントには vulnerabilities セクションも含まれます。
デフォルトでは、retire.js は脆弱性を検出すると終了コード 13 で終了します。これは --exitwith 0 で上書きできます。
Chrome および Firefox 拡張機能
訪問したサイトをスキャンして安全でないライブラリへの参照を検出し、開発者コンソールに警告を表示します。アドレスバーのアイコンは、脆弱なライブラリが読み込まれたかどうかも示します。
Burp 拡張機能と OWASP ZAP アドオン
@h3xstream は、ペネトレーションテストツール Burp と OWASP ZAP 向けの プラグイン として Retire.js を移植しました。
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 拡張機能を使用する代わりに、ヘッドレスモードで Web サイトをスキャンできます。
Grunt プラグイン(非推奨)
アプリケーションのビルドルーチンやその他の自動化ワークフローの一部として Retire.js を実行するための Grunt タスク です。
Gulp タスク(非推奨)
gulpfile で使用できる Gulp タスクの例で、プロジェクトファイルを自動的に監視およびスキャンします。ウォッチパターンや(オプションの)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();
});
});
寄付
寄付は、ツールと脆弱性リポジトリのメンテナンスに使用されます。
