
js-x-ray @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、ホスト名、メールアドレス
- 設定可能な感度モード (conservative/aggressive) と拡張可能なプローブシステム
- 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 パッケージ README を参照してください。
ワークスペース
🐥 コントリビューターガイド
プロジェクトに貢献したい開発者は、まず CONTRIBUTING ガイドを読む必要があります。
開発が完了したら、次のスクリプトを実行してテスト (およびリンター) がまだ良好であることを確認してください:
$ npm run check
[!CAUTION] 新機能を導入したりバグを修正したりする場合は、必ずそのテストも含めてください。
内部 API
JS-X-Ray の内部に取り組むコントリビューター向けに、以下のリソースは低レベルのユーティリティと AST 操作パターンを文書化しています:
- ESTree ユーティリティ - ESTree AST ノードを操作するための低レベルヘルパー
- ESTree の代入と宣言のパターン (フランス語) - AST 形式での JavaScript の代入と宣言のパターンに関するリファレンスガイド
ベンチマーク
js-x-ray のパフォーマンスは mitata を使用して測定および追跡されています。
ベンチマークを実行するには:
workspaces/js-x-rayに移動します。npm run benchを実行します。
ベンチマーク結果は workspaces/js-x-ray/benchmark/report.json に保存されます。このファイルを手動で編集しないでください。プルリクエストごとに自動的に更新されます。
コントリビューター ✨
これらの素晴らしい人々に感謝します (emoji key):
ライセンス
MIT

























