アップデート一覧に戻る
New releaseAug 17, 2026

glassworm-hunter v1.0.4

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

共有

glassworm-hunter

Glassworm Hunter Logo

あなたのマシン上で 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

検出内容

手法の検出(未知の亜種も捕捉)

  • 不可視の Unicode ペイロード — バリエーションセレクター文字(U+FE00-FE0F、U+E0100-E01EF)を使用して隠しコードをエンコード。正当な用途は絵文字の 1~2 文字。GlassWorm は数千文字を使用。
  • GlassWorm デコーダーパターン — codePointAt とバリエーションセレクター範囲の算術演算で不可視ペイロードをデコードするパターン。
  • 双方向オーバーライド文字 — Trojan Source 攻撃(CVE-2021-42574)
  • ハングルフィラー — 不可視の有効な JavaScript 識別子(U+3164)
  • 動的コンテンツを含む eval/Function — デコードされた文字列が供給される実行シンク
  • 認証情報へのアクセス — .npmrc、.gitcredentials、SSH キー、トークン環境変数を読み取るコード
  • C2 通信パターン — 不適切なコンテキストでの Solana RPC 呼び出し、Google Calendar URL、WebRTC データチャネル

既知の IOC マッチング(補足)

  • 21 個の既知の悪意のある VS Code/OpenVSX 拡張機能 ID(全 5 波)
  • 4 個の既知の悪意のある npm パッケージ
  • 14 個の既知の C2 IP アドレス
  • 3 個の既知の Solana C2 ウォレットアドレス
  • 攻撃者のメールアドレスやビルドパスのアーティファクト

深刻度レベル

レベル意味
CRITICALアクティブな GlassWorm ペイロードを検出(コード内の不可視 Unicode クラスター、デコーダーパターン)
HIGH既知の悪意のある IOC に一致(C2 IP、ウォレット、既知のマルウェアへの拡張機能依存関係)
MEDIUM確認すべき疑わしいパターン(動的コンテンツを含む eval、認証情報アクセス、Trojan Source)
LOW情報提供(異常なゼロ幅文字密度、不審なインストールスクリプト)

CLI オプション

glassworm-hunter scan [OPTIONS] [PATHS...]
オプションデフォルト説明
--extensions / --no-extensionsonVS Code/Cursor/Codium 拡張機能をスキャン
--npm-scan / --no-npm-scanonnode_modules をスキャン
--pip-scan / --no-pip-scanoffPython site-packages をスキャン
--git / --no-gitongit リポジトリをスキャン
--format [console|json|sarif]console出力形式
--output FILEstdoutレポートをファイルに書き込み
--severity [critical|high|medium|low]low報告する最小の深刻度
--max-file-size SIZE10MBこれより大きいファイルをスキップ
--include-hiddenoff隠しファイル/ディレクトリをスキャン
--quietoff進捗出力を抑制
--verboseoffスキャンしている全ファイルを表示
--exclude PATTERN除外するグロブパターン(繰り返し可)
--disable-rule RULE_ID特定の検出ルールを抑制(繰り返し可)
--ioc-file FILE追加の IOC インジケーターを JSON ファイルから読み込み

スキャン中は、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スキャナーエラー

何か見つかった場合

  1. パニックにならないでください。 スキャナーが検出したのはインジケーターであり、確定した侵害ではありません。一部の検出は誤検知である可能性があります。私たちのチームは継続的に誤検知を減らし、検出精度を向上させるよう取り組んでいます。
  2. フラグが立ったコードは実行しないでください。 問題が解決されるまで、影響を受けたプロジェクトの実行、ビルド、テストを行わないでください。
  3. CRITICAL 検出: 拡張機能/パッケージを直ちにアンインストールしてください。マシン上の NPM トークン、GitHub トークン、SSH キー、その他の認証情報をローテーションしてください。
  4. HIGH 検出: フラグが立ったファイルを調査してください。明示的にインストールしていない依存関係にある場合は削除してください。
  5. MEDIUM 検出: コードを確認してください。これらのパターンは疑わしいですが、状況によっては正当な場合もあります。

CI/CD 統合

自動処理用の 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 ファイル

--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)の上にマージされます。

IOC データベースのレイヤー

スキャナーは 3+1 レイヤーの IOC システムを使用します(各レイヤーは前のレイヤーの上にマージされ、削除は行われません):

  1. ハードコード — Python ソースに組み込まれており、常に利用可能
  2. バンドル — パッケージに同梱されている data/ioc.json
  3. ユーザー~/.glassworm/ioc.jsonglassworm-hunter update で更新
  4. カスタム--ioc-file フラグ、最優先

クレジット

  • Koi Security — GlassWorm の初発見(2025 年 10 月)および複数の波にわたる継続的な追跡(OpenVSX/VSCode キャンペーン、Rust バイナリピボット、macOS ピボットを含む)。本スキャナー内の IOC データは同社の公開研究に基づいています。
  • Aikido Security — GitHub リポジトリと npm パッケージを標的とした 2026 年 3 月の GlassWorm 波の解析。Socket、Step Security、OpenSourceMalware コミュニティと協力。
  • AFINE — 本スキャナー。詳細な研究はこちら: Hunting GlassWorm: Open-Source Detection for Invisible Supply Chain Payloads

Windows

スキャナーは Windows でも動作します。管理者(Administrator)権限のコマンドプロンプトで実行しない場合、4 つのテストが失敗します。

ライセンス

MIT

カテゴリ