mcpField
P
prompt-injection-scanner

prompt-injection-scanner

ローカル
github.com/GuardBeeセキュリティ22 日前に更新

prompt-injection-scanner について

prompt-injection-scanner は、RAG コンテンツ、スクレイピングしたページ、文書に含まれる間接的なプロンプトインジェクションを検出する MCP サーバーです。パターン検出にリスクの説明と SARIF 出力を組み合わせ、LLM のコンテキストに入るデータの確認に役立ちます。

主な機能

  1. 015 種類の注入パターンを検出
  2. 02テキスト、ファイル、ディレクトリをスキャン
  3. 03検出結果にリスク対策を提示
  4. 04SARIF 2.1.0 出力に対応
  5. 05任意の LLM セマンティック判定

活用シーン

  1. 01RAG ナレッジベース文書の確認
  2. 02CI/CD でのコンテンツリポジトリ検査
  3. 03スクレイピングページの隠れた指示の確認

MCP 対応

MCP クライアント向けに scan_text、scan_file、scan_directory、list_patterns ツールを提供し、コンテンツを検査します。

設定

ローカルサーバーの設定はどのクライアントでも共通です。コピーしてクライアントの MCP 設定ファイルに貼り付けてください。

mcp.json · 共通設定
{
"mcpServers": {
"guardbee-prompt-injection-scanner": {
"command": "npx",
"args": [
"-y",
"@guardbee/mcp-prompt-injection-scanner"
]
}
}
}
起動コマンドnpx -y @guardbee/mcp-prompt-injection-scanner

ローカルサーバーにはマシン上の実行環境(Node.js 18 以上など)が必要です。設定ファイルの場所はクライアントごとに異なります。

パッケージ
npm@guardbee/mcp-prompt-injection-scanner1.2.0

ツール

4

掲載時のツール一覧 · 4 日前に更新

パラメーター型必須説明
labelstringいいえ検出結果に表示する任意のラベル(例:ソース URL やファイル名)
contentstringはいスキャンするテキスト内容

詳細

@guardbee/mcp-prompt-injection-scanner

🇬🇧 English | 🇹🇷 Türkçe | 🇨🇳 中文 | 🇯🇵 日本語 | 🇰🇷 한국어 | 🇧🇷 Português | 🇪🇸 Español | 🇩🇪 Deutsch

npm version npm downloads License: MIT

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-overrideinstruction_override_phrasehigh「以前の指示を無視する/破棄する/忘れる」のような典型的な上書きフレーズです
instruction-overrideinstruction_override_trhighトルコ語の表現です:「önceki talimatları yok say / unut / görmezden gel」
instruction-overridedan_modehigh脱獄用ペルソナ「DAN mode」を求めています
instruction-overridebypass_safetyhighモデルの安全対策やガードレールを回避または無効化するよう指示します
role-spoofingsystem_role_spoofmediumコンテンツ内の行頭にある、偽の「System:」ロールラベルです
role-spoofingchat_template_marker_injectionhighコンテンツ内の生のチャットテンプレート制御トークン(<|im_start|>、[INST])です
role-spoofingsystem_taghighデータをシステムメッセージに見せかけようとする <system> タグです
hidden-texthidden_zero_width_charsmediumゼロ幅スペース/ワードジョイナー(U+200B/U+2060)です。人間のレビュアーには見えないテキストです
hidden-textunicode_tag_smugglingcritical隠されたテキストを含む不可視の Unicode タグ文字(U+E0000–E007F)です。🏴󠁧󠁢󠁥󠁮󠁧󠁿 のような旗の絵文字は除外されます
hidden-textbidi_control_charsmediumテキストの表示順を読み取り順と異なる順序にする、双方向テキストのオーバーライド/分離文字です
hidden-textcss_hidden_text_with_instructionhigh指示に見える文言を含む display:none/白地に白文字の要素です
hidden-texthtml_comment_instructionhigh指示に見える文言を含む HTML コメントです
direct-addressdirect_address_to_aimediumコンテンツが「AI」/「アシスタント」に直接語りかけています
exfiltrationexfiltration_url_template_in_imagehigh{{...}}/${...} テンプレートを含む Markdown 画像 URL です。データ流出用のビーコンです
exfiltrationreveal_system_prompt_requesthighモデルにシステムプロンプトの開示を求める文です
exfiltrationreveal_system_prompt_trhighトルコ語の表現です:「sistem istemini göster」
exfiltrationsend_data_to_url_instructioncriticalデータを外部 URL に送信するよう明示的に命令する指示です

これらはヒューリスティックによる検出結果です。静的なテキストパターンのスキャンであり、意味や意図の分析ではありません。誤検出を少なくするよう設計されています(例:絵文字の ZWJ シーケンスや通常の display:none モーダルは明示的に除外されます)が、検出結果はすべて手動で確認してください。


LLM による判定(任意)

パターン検出では攻撃フレーズを認識しますが、言い換えられた指示、間接的な指示、翻訳された指示はすり抜けることがあります。--judge を使うと、モデルが各ファイルをチャンクごとに読み込み、エージェントを標的とする指示を judge_semantic_injection(high)として報告します。検出結果には judge: { model, version, confidence } が含まれ、SARIF の properties にも記録されます。判定機能は検出結果を追加するだけです。

GUARDBEE_JUDGE_URL=http://127.0.0.1:11434/v1 GUARDBEE_JUDGE_MODEL=qwen2.5:7b \
  npx @guardbee/mcp-prompt-injection-scanner scan ./docs --judge

設定されていない場合は無効です。コンテンツはエンドポイントに送信されるため、ローカル以外のエンドポイントを使用するには --judge-allow-remote と https が必要です。GuardBee の判定ベンチマーク(英語とトルコ語のサンプル 50 件)では、パターン検出で攻撃の 16% を検出し、qwen2.5:7b では誤検出なしですべて検出しました。

設定(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でスレッドを開始するか、イシューを作成してください。GuardBee が役に立った場合は、リポジトリに ⭐ を付けると、ほかの人にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

プロトコルの概要から最初のサーバーの導入まで、よくある疑問にまとめて答えます。

AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。