
js-x-ray v@nodesecure/[email protected]
JavaScript & Node.js オープンソース SAST スキャナー。最も一般的な悪意のあるパターンを検出する静的解析ツール 🔬。
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、動的インポートを完全な変数追跡で追跡- 難読化されたコードを検出し、使用されているツールを特定(jsfuck、jjencode、obfuscator.ioなど)
- 悪意のあるパターン(データの外部流出、
process.envのシリアル化、安全でないシェルコマンド)をフラグ付け - 脆弱なコードを検出:
eval()、Function()コンストラクタ、ReDoSを起こしやすい正規表現、SQLインジェクション - 弱い暗号アルゴリズム(MD5、SHA1など)をフラグ付け
- インフラ指標の抽出:URL、IPアドレス、ホスト名、メールアドレス
- 設定可能な感度モード(保守的/攻撃的)と拡張可能なプローブシステム
- JavaScriptとTypeScriptの両方をサポート
💃 はじめに
これらのパッケージは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を参照してください。
Workspaces
🐥 コントリビューターガイド
プロジェクトに貢献したい開発者の方は、まずCONTRIBUTINGガイドをお読みください。
開発が完了したら、以下のスクリプトを実行してテスト(およびリンター)がまだ正常に動作することを確認してください。
$ npm run check
[!CAUTION] 新機能を導入したりバグを修正したりする場合は、必ずそのためのテストも含めてください。
内部API
JS-X-Rayの内部に取り組むコントリビューター向けに、以下のリソースが低レベルユーティリティとAST操作パターンを文書化しています。
- ESTree utilities - ESTree ASTノードを操作するための低レベルヘルパー
- ESTree assignment and declaration patterns (french) - AST形式におけるJavaScript代入・宣言パターンのリファレンスガイド
ベンチマーク
js-x-rayのパフォーマンスはmitataを使用して測定・追跡されています。
ベンチマークを実行するには:
workspaces/js-x-rayに移動します。npm run benchを実行します。
ベンチマーク結果は workspaces/js-x-ray/benchmark/report.json に保存されます。このファイルは手動で編集しないでください。プルリクエストごとに自動的に更新されます。
Contributors ✨
これらの素晴らしい方々に感謝します(emoji key):
License
MIT

























