
Claude Codeフック、Cursorルール、MCP自動登録を介してRCEを引き起こす可能性のあるAI-IDE設定ファイルをリポジトリ内でスキャンします。CVE-2025-59536、CVE-2026-21852、CVE-2026-30615、およびPillar Rules Fileバックドアパターンを検出します。
リポジトリをスキャンして、Claude Code、Cursor、Windsurf、Continue、または任意の VS Code フォークで開いた際に、RCE、認証情報の窃取、開発者マシンの永続的な侵害を引き起こす可能性のある AI-IDE 設定ファイルを検出します。
2026年4月の AI-IDE 開示の波を受けて構築されました:
settings.json の SessionStart / PreToolUse / PostToolUse / UserPromptSubmit フックは、ワークスペースを開いたときに任意のシェルコマンドを実行します。.cursorrules / .windsurfrules / .github/copilot-instructions.md / .continue/*.md 内に Unicode で密輸された命令。人間のレビュアーから攻撃者の指示を隠します。ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE を攻撃者が制御するエンドポイントへリダイレクト(プロンプトと API キーの外部送信)。mcp.json / .mcp.json / .cursor/mcp.json / .claude/mcp.json による MCP サーバーの自動登録。任意の command を stdio で起動します。.vscode/tasks.json の自動実行。AI 搭載エディタで開く前に、クローンしたすべてのサードパーティ製リポジトリで実行してください。
インストール不要 — npx を使用:
npx valtik-ai-ide-config-guard <path>
またはグローバルにインストール:
npm i -g valtik-ai-ide-config-guard
ai-ide-config-guard <path>
Node 20+ が必要です。
$ npx valtik-ai-ide-config-guard ./my-cloned-repo
失敗しきい値付き(CI 用):
$ npx valtik-ai-ide-config-guard . --fail-on high
JSON 出力:
$ npx valtik-ai-ide-config-guard . --json > report.json
SARIF 2.1.0(GitHub code scanning 用):
$ npx valtik-ai-ide-config-guard . --sarif > report.sarif
チェックの一部を実行:
$ npx valtik-ai-ide-config-guard . --checks G1,G3,G5
全フラグ一覧:npx valtik-ai-ide-config-guard --help。
.claude/settings.json を検出し、hooks.SessionStart / hooks.PostToolUse / hooks.PreToolUse / hooks.UserPromptSubmit(および関連するライフサイクルイベント)を解析します。いずれかのエントリが command 文字列(またはグループ化された文法内の type: "command")を設定している場合、検出結果は CRITICAL です — Claude Code でリポジトリを開くと、開発者のシェル上で、その環境変数、SSH キー、トークンを使ってコマンドが実行されます。
以下をスキャンします:.cursorrules、.cursor/rules/*.md[c]、.windsurfrules、.windsurf/rules/*.md[c]、.github/copilot-instructions.md、.continue/*.md
ignore previous、from now on、system: など)純キリル文字のテキスト、絵文字、ファイル先頭の BOM は無視されます — 人間のレビュアーから内容を隠すものだけをフラグします。
mcp.json、.mcp.json、.claude/mcp.json、.cursor/mcp.json、.windsurf/mcp.json、.vscode/mcp.json、.continue/config.json を解析します。登録された各サーバーについて:
command が src/fixtures/known-malicious-mcp.json に一致 → CRITICALcommand がローカルバイナリ → HIGHcommand が未検証のパッケージを取得する npx / uvx / pipx → MEDIUMurl が HTTPS 以外 → MEDIUMurl が localhost / LAN を指す → MEDIUMrunOptions.runOn: "folderOpen" を持つタスクをフラグします。コマンドがシェル補間(curl | sh、wget | bash、eval、base64 -d、バッククォート、$(...))を使用している場合、または外部 URL を参照している場合、深刻度が上がります。
.env*、.claude/settings.json、.cursor/config.json、.vscode/settings.json、および任意の mcp.json をスキャンします:
ANTHROPIC_BASE_URL、ANTHROPIC_API_URLOPENAI_BASE_URL、OPENAI_API_BASE、OPENAI_API_URLホストが正規のベンダーエンドポイント(api.anthropic.com / api.openai.com)でない場合、検出結果は CRITICAL です — すべてのリクエストと API キーが攻撃者のエンドポイントに送信されます。クラウド以外のホスト(localhost、LAN IP)は HIGH としてフラグされます。
security.workspace.trust.enabled: false(または Cursor の同等設定)を含む .vscode/settings.json をフラグします。これは、自動実行動作をブロックするネイティブのゲートを黙って無効化するものです。
ルールの .md / .mdc ファイル内で、curl | sh、wget | bash、rm -rf、eval、base64 -d、python -c、/dev/tcp、リバースシェル mkfifo、chmod +x を含むフェンスコードブロックをスキャンします。周囲の文章が命令的(「これを実行」「次のコマンドを実行してください」)な場合、深刻度が上がります。
claude*、cursor*、windsurf*、mcp*、continue*、copilot*、aider*、cline* という名前のスクリプトに対する情報提供用フラグです。同じ名前が npm のライフサイクルフック(preinstall、postinstall など)と衝突する場合 HIGH です — ライフサイクルフックは npm install 時にユーザーの確認なしで実行されます。
GitHub Actions:
- name: AI-IDE config guard
run: npx valtik-ai-ide-config-guard . --fail-on high
または SARIF アップロード:
- run: npx valtik-ai-ide-config-guard . --sarif > ai-ide.sarif
- uses: github/codeql-action/upload-sarif@v3
with:
sarif_file: ai-ide.sarif
test/fixtures/safe/ での誤検知ゼロが設計目標です — 境界線上のケースを見逃す方が、ユーザーに私たちを無視する習慣を付けさせるよりマシだからです。npx のドライランも URL フェッチも行いません)。このツールは静的解析です。クリーンなレポートは「このバージョンに同梱されている 8 つのチェックが発動しなかった」ことを意味するのであって、「このリポジトリが AI-IDE で開いても安全」という意味ではありません。自分が作成していないすべてのリポジトリを敵対的とみなし、ワークスペーストラスト、フックレビュー、MCP レビューを手動で適用してください。
MIT ライセンス — Copyright (c) 2026 Valtik Studios LLC.
| ID | 深刻度 | 検出内容 |
|---|
| G1 | CRITICAL | セッション / ツール使用イベントでシェルを実行する Claude Code フック |
| G2 | HIGH / MEDIUM | ルール内の Bidi / ゼロ幅 / タグ文字、ホモグリフ、ロールオーバーライドパターン |
| G3 | CRITICAL / HIGH / MEDIUM | リスクのある command または url で登録された MCP サーバー |
| G4 | HIGH / MEDIUM | runOn: folderOpen を含む .vscode/tasks.json |
| G5 | CRITICAL / HIGH | ANTHROPIC_BASE_URL / OPENAI_BASE_URL / OPENAI_API_BASE のリダイレクト |
| G6 | HIGH / INFO | ワークスペーストラスト無効、task.autoDetect: on |
| G7 | HIGH / MEDIUM | ルール Markdown 内のフェンスブロックにある危険なシェルパターン |
| G8 | HIGH / INFO | AI エージェントにちなんだ名前の package.json スクリプト(またはインストールフック内のエージェント) |