
JS-X-Ray は、悪意のあるパターン、セキュリティ脆弱性、コードの異常を特定するための JavaScript & TypeScript 向け SAST です。ESLint のようなものですが、セキュリティ分析に特化していると考えてください。もともとは NodeSecure CLI のために作られましたが、JS-X-Ray はサプライチェーン保護のための独立した本格的な選択肢となっています。
JS-X-Ray は JS または TS のコードを 抽象構文木 (AST) にパースし、RegEx や Semgrep ルールを多用しません。これにより、変数の追跡、動的インポートの解決、パターンマッチングツールでは見逃される高度な難読化の検出が可能になります。トレードオフとして、JS-X-Ray は JavaScript/TypeScript エコシステムに純粋に特化しています。
require()、import、動的インポートの追跡process.env のシリアライズ、安全でないシェルコマンドeval()、Function() コンストラクタ、ReDoS を引き起こす正規表現、SQL インジェクションこれらのパッケージは Node パッケージリポジトリで入手可能で、npm または yarn で簡単にインストールできます。
$ npm i @nodesecure/js-x-ray
# or
$ yarn add @nodesecure/js-x-ray
import { AstAnalyser } from "@nodesecure/js-x-ray";
const scanner = new AstAnalyser();
const { warnings, dependencies } = await scanner.analyseFile("./file.js");
console.log(dependencies);
console.dir(warnings, { depth: null });
完全な API ドキュメント、警告カタログ、高度な使用方法については、@nodesecure/js-x-ray パッケージ README を参照してください。
プロジェクトに貢献したい開発者は、まず CONTRIBUTING ガイドを読む必要があります。
開発が完了したら、次のスクリプトを実行してテスト (およびリンター) がまだ良好であることを確認してください:
$ npm run check
[!CAUTION] 新機能を導入したりバグを修正したりする場合は、必ずそのテストも含めてください。
JS-X-Ray の内部に取り組むコントリビューター向けに、以下のリソースは低レベルのユーティリティと AST 操作パターンを文書化しています:
js-x-ray のパフォーマンスは mitata を使用して測定および追跡されています。
ベンチマークを実行するには:
workspaces/js-x-ray に移動します。npm run bench を実行します。ベンチマーク結果は workspaces/js-x-ray/benchmark/report.json に保存されます。このファイルを手動で編集しないでください。プルリクエストごとに自動的に更新されます。
これらの素晴らしい人々に感謝します (emoji key):