
GlassWormのサプライチェーン攻撃ペイロードを検出します。VS Code拡張機能、npm/PyPIパッケージ、gitリポジトリをスキャンし、不可視のUnicodeペイロード、デコーダパターン、C2マーカー、既知の悪意あるIOCを検出します。

あなたのマシン上で GlassWorm サプライチェーン攻撃のペイロードを検出します。VS Code 拡張機能、npm パッケージ、Python パッケージ、git リポジトリをスキャンします。
このスキャナーは攻撃手法そのものを検出します。すなわち、不可視の Unicode バリエーションセレクターペイロード、GlassWorm デコーダーパターン、C2 インジケーター、認証情報収集コードなどです。
pip install glassworm-hunter
または pipx を使用:
pipx install glassworm-hunter
カレントディレクトリを VS Code/Cursor 拡張機能をスキャンせずにスキャン:
glassworm-hunter scan --no-extensions
特定のプロジェクトをスキャン:
glassworm-hunter scan /path/to/project
| レベル | 意味 |
|---|---|
| CRITICAL | アクティブな GlassWorm ペイロードを検出(コード内の不可視 Unicode クラスター、デコーダーパターン) |
| HIGH | 既知の悪意のある IOC に一致(C2 IP、ウォレット、既知のマルウェアへの拡張機能依存関係) |
glassworm-hunter scan [OPTIONS] [PATHS...]
スキャン中は、stderr に Rich プログレスバーが表示されます。--quiet または --verbose を指定すると自動的に抑制されます。スキャン完了後、常にサマリー行(スキャンしたファイル数、検出結果、出力先)が stderr に出力されます。
# すべての検出ルール ID を一覧表示(--disable-rule で使用)
glassworm-hunter rules
# ローカルの IOC データベースを GitHub から更新(デフォルトソース:
# https://raw.githubusercontent.com/afine-com/glassworm-hunter/main/data/ioc.json)
glassworm-hunter update
# カスタムソースから更新(例: 内部脅威インテリジェンスサーバー)
glassworm-hunter update --source https://internal.corp/ioc.json
# 既存のローカル IOC データベースを強制的に上書き
glassworm-hunter update --force
# バージョン表示
glassworm-hunter version
| コード | 意味 |
|---|---|
| 0 | 検出結果なし |
| 1 | 検出結果あり |
| 2 | スキャナーエラー |
自動処理用の JSON 出力:
glassworm-hunter scan . --format json --output report.json --no-extensions
GitHub Code Scanning 用の SARIF:
glassworm-hunter scan . --format sarif --output results.sarif --no-extensions
SARIF を GitHub にアップロード:
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: results.sarif
CI で終了コードを使用:
glassworm-hunter scan . --severity critical --no-extensions || exit 1
ビルド成果物やベンダーコードを除外:
glassworm-hunter scan . --exclude "dist/**" --exclude "*.min.js" --no-extensions
このスキャナーはデフォルトで完全にオフラインです。ローカルファイルのみを読み取ります。テレメトリ、ホームコール、自動更新チェックは一切行いません。IOC データベースはパッケージにバンドルされています。
ネットワークリクエストを行う唯一のコマンドは glassworm-hunter update で、これは GitHub(またはカスタムの --source URL)から最新の IOC データベースを取得します。自動的に呼び出されることはありません。
プロジェクトルートに .glassworm.yml を配置してデフォルト値を設定:
exclude:
- "*.min.js"
- "vendor/**"
- "dist/**"
disable_rules:
- zero-width-chars
severity: medium
CLI フラグは設定ファイルの値を上書きします。
--ioc-file を使用して、JSON ファイルから追加のインジケーターを読み込みます。チーム固有の脅威インテリジェンスや内部の脅威情報に便利です:
glassworm-hunter scan /path --ioc-file /path/to/team_ioc.json
ファイルは data/ioc.json と同じスキーマに従う必要があります:
{
"schema_version": "1.0",
"extensions": [{"id": "publisher.name"}],
"npm_packages": [{"name": "pkg", "malicious_versions": "1.0.0"}],
"c2_ips": [{"ip": "1.2.3.4"}],
"c2_wallets": [{"address": "..."}],
"attacker_artifacts": [{"type": "email", "value": "[email protected]"}]
}
カスタムファイルは他のすべての IOC レイヤー(ハードコード → バンドル → ユーザー ~/.glassworm/ioc.json → --ioc-file)の上にマージされます。
スキャナーは 3+1 レイヤーの IOC システムを使用します(各レイヤーは前のレイヤーの上にマージされ、削除は行われません):
data/ioc.json~/.glassworm/ioc.json、glassworm-hunter update で更新--ioc-file フラグ、最優先スキャナーは Windows でも動作します。管理者(Administrator)権限のコマンドプロンプトで実行しない場合、4 つのテストが失敗します。
MIT
| MEDIUM | 確認すべき疑わしいパターン(動的コンテンツを含む eval、認証情報アクセス、Trojan Source) |
| LOW | 情報提供(異常なゼロ幅文字密度、不審なインストールスクリプト) |
| オプション | デフォルト | 説明 |
|---|
--extensions / --no-extensions | on | VS Code/Cursor/Codium 拡張機能をスキャン |
--npm-scan / --no-npm-scan | on | node_modules をスキャン |
--pip-scan / --no-pip-scan | off | Python site-packages をスキャン |
--git / --no-git | on | git リポジトリをスキャン |
--format [console|json|sarif] | console | 出力形式 |
--output FILE | stdout | レポートをファイルに書き込み |
--severity [critical|high|medium|low] | low | 報告する最小の深刻度 |
--max-file-size SIZE | 10MB | これより大きいファイルをスキップ |
--include-hidden | off | 隠しファイル/ディレクトリをスキャン |
--quiet | off | 進捗出力を抑制 |
--verbose | off | スキャンしている全ファイルを表示 |
--exclude PATTERN | — | 除外するグロブパターン(繰り返し可) |
--disable-rule RULE_ID | — | 特定の検出ルールを抑制(繰り返し可) |
--ioc-file FILE | — | 追加の IOC インジケーターを JSON ファイルから読み込み |