
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 package 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):
MIT
![]() tchapacan 💻 ⚠️ |
![]() mkarkkainen 💻 |
![]() Michael Mior 📖 |