prompt-injection-scanner について
prompt-injection-scannerは、RAGコンテンツ、取得したウェブページ、文書に含まれる間接プロンプトインジェクションを調べる開発者・チーム向けMCPサーバーです。ヒューリスティックなスキャンを行い、検出結果にリスクの説明と推奨事項を含めます。
主な機能
- 015カテゴリのインジェクションパターン検出
- 02テキスト、ファイル、ディレクトリのスキャン
- 03リスクの説明と推奨事項を提示
- 04SARIF 2.1.0形式で出力
- 05guardbee.ymlによる設定
活用シーン
- 01インデックス登録前のRAG文書の確認
- 02モデルによる取得前のウェブページ検査
- 03ナレッジベースのCIパイプラインへのコンテンツ検査追加
MCP 対応
テキスト、ファイル、ディレクトリのスキャンと、対応パターンの一覧表示を行うMCPツールを提供します。コンテンツのスキャンとSARIF出力にはコマンドラインも利用できます。
設定
ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。
ツール
4掲載時のツール一覧 · 2 週間前に更新
| パラメーター | 型 | 必須 | 説明 |
|---|---|---|---|
| label | string | いいえ | 検出結果に表示する任意のラベル(例:ソース URL やファイル名) |
| content | string | はい | スキャンするテキスト内容 |
詳細
@guardbee/mcp-prompt-injection-scanner
🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch
RAG チャンク、スクレイピングしたウェブページ、ドキュメントなどのコンテンツをスキャンし、間接的なプロンプトインジェクションのペイロードを検出する MCP(Model Context Protocol)サーバーです。
ai-code-scanner と mcp-server-auditor はコードをスキャンしますが、このパッケージはデータをスキャンします。従来のプロンプトインジェクションでは、攻撃者が自ら悪意のあるプロンプトを書きます。一方、間接的なプロンプトインジェクションでは、攻撃者がモデルに直接話しかけることはありません。その代わり、後でモデルが読むドキュメント、ウェブページ、ツールの結果に指示を埋め込みます。RAG による検索やウェブ取得を通じてモデルがこのコンテンツをコンテキストに取り込むと、埋め込まれた指示はユーザー自身の指示と同じ権限を持つかのように見えます。
テレメトリーはデフォルトでオフです。
GUARDBEE_TELEMETRY=1を設定すると、サーバー、ツール、成功の有無、所要時間、ファイルパスなどの短いパラメーター値が送信されます。長い文字列や、content、token、passwordなどのフィールドはプレースホルダーに置き換えられます。詳細は@guardbee/mcp-telemetryを参照してください。
Web page/RAG document ──► prompt-injection-scanner ──► LLM context
│
├─ Instruction override ("ignore all previous instructions", "önceki talimatları yok say")
├─ Role spoofing ("System:", <|im_start|>, [INST], <system>)
├─ Hidden text (zero-width, Unicode tag and bidi characters, display:none + instruction, HTML comment)
├─ Direct address ("Dear AI, ...")
└─ Exfiltration (system prompt extraction request, data → URL instruction, templated img beacon)
特徴
- 17 個のパターン、5 つのカテゴリー — 指示の上書き、ロールの偽装、隠しテキスト、直接呼びかけ、情報の持ち出し。英語とトルコ語の表現に対応
- ルールは
@guardbee/guard-coreにあり、@guardbee/mcp-security-proxyと共有されています。そのため、このスキャナーが報告する表現は、プロキシが実行時にブロックする表現と同じです - 検出結果にはすべて、リスクの理由と対処方法(
recommendation)が含まれます。単に「検出した」と伝えるだけではありません - SARIF 2.1.0 の出力 — CI/CD との統合に対応(例:PR ごとにナレッジベースのリポジトリを自動スキャン)
guardbee.ymlによる設定ファイルのサポート- 単体テスト 45 件 — 各パターンに陽性シナリオと陰性(誤検出)シナリオを用意しています。絵文字の ZWJ シーケンスや通常の
display:noneモーダルなど、既知の誤検出要因も個別にテストしています
クイックスタート
Claude Desktop / MCP クライアント
{
"mcpServers": {
"guardbee-prompt-injection-scanner": {
"command": "npx",
"args": ["-y", "@guardbee/mcp-prompt-injection-scanner"]
}
}
}
CLI(CI/CD — 例:PR ごとに RAG ナレッジベースのリポジトリをスキャン)
npx @guardbee/mcp-prompt-injection-scanner scan ./knowledge-base --fail-on=high --format=sarif > results.sarif
MCP ツール
| ツール | 説明 |
|---|---|
scan_text | 指定されたテキストまたはドキュメントのスニペットをスキャンします |
scan_file | 単一のファイルをスキャンします |
scan_directory | ディレクトリを再帰的にスキャンします(例:RAG ナレッジベース)。node_modules、.git、dist は自動的にスキップされます |
list_patterns | カテゴリー別に、サポートされているすべてのパターンを一覧表示します |
検出されたパターン
| カテゴリ | パターン | 重大度 | 意味 |
|---|---|---|---|
| instruction-override | instruction_override_phrase | 高 | 「以前の指示を無視/破棄/忘れる」といった典型的な上書きフレーズ |
| instruction-override | instruction_override_tr | 高 | トルコ語の表現:「önceki talimatları yok say / unut / görmezden gel」 |
| instruction-override | dan_mode | 高 | 脱獄用ペルソナ「DAN mode」を求めるもの |
| instruction-override | bypass_safety | 高 | モデルに安全対策/ガードレールを回避または無効化するよう指示するもの |
| role-spoofing | system_role_spoof | 中 | コンテンツ内の行頭にある、偽の「System:」ロールラベル |
| role-spoofing | chat_template_marker_injection | 高 | コンテンツ内の生のチャットテンプレート制御トークン(<|im_start|>、[INST]) |
| role-spoofing | system_tag | 高 | データをシステムメッセージに見せかけようとする <system> タグ |
| hidden-text | hidden_zero_width_chars | 中 | ゼロ幅スペース/ワードジョイナー(U+200B/U+2060)— 人間のレビュアーには見えないテキスト |
| hidden-text | unicode_tag_smuggling | 重大 | 隠しテキストを含む不可視の Unicode タグ文字(U+E0000–E007F)。🏴 などの旗絵文字は除外されます |
| hidden-text | bidi_control_chars | 中 | テキストの表示順と読み取り順を異ならせる双方向制御/分離文字 |
| hidden-text | css_hidden_text_with_instruction | 高 | 指示のような文言を含む display:none/白地に白文字の要素 |
| hidden-text | html_comment_instruction | 高 | 指示のような文言を含む HTML コメント |
| direct-address | direct_address_to_ai | 中 | コンテンツが「AI」/「アシスタント」に直接呼びかけるもの |
| exfiltration | exfiltration_url_template_in_image | 高 | {{...}}/${...} テンプレートを含む Markdown 画像 URL — データ流出用ビーコン |
| exfiltration | reveal_system_prompt_request | 高 | モデルにシステムプロンプトの開示を求める文 |
| exfiltration | reveal_system_prompt_tr | 高 | トルコ語の表現:「sistem istemini göster」 |
| exfiltration | send_data_to_url_instruction | 重大 | 外部 URL にデータを送信するよう明示的に命じる指示 |
これらはヒューリスティックな検出結果です。静的なテキストパターンのスキャンであり、意味や意図の分析ではありません。誤検出を少なくするよう設計されています(例:絵文字の ZWJ シーケンスや通常の display:none モーダルは明示的に除外されています)が、検出結果はすべて手動で確認してください。
設定(guardbee.yml)
prompt-injection-scanner:
fail-on: high # any | critical | high | medium | low | none
max-files: 5000
exclude:
- ".test.ts"
- "fixtures/"
開発
npm run build
npm test # 45 unit tests
ライセンス
MIT — GuardBee
フィードバック
質問、アイデア、または誤検出がありますか?GitHub Discussions でスレッドを立てるか、issue を作成してください。GuardBee が役に立った場合は、リポジトリに ⭐ を付けていただくと、ほかの人にも見つけてもらいやすくなります。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。