mcpField
P
prompt-injection-scanner

prompt-injection-scanner

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

prompt-injection-scanner について

prompt-injection-scannerは、RAGコンテンツ、取得したウェブページ、文書に含まれる間接プロンプトインジェクションを調べる開発者・チーム向けMCPサーバーです。ヒューリスティックなスキャンを行い、検出結果にリスクの説明と推奨事項を含めます。

主な機能

  1. 015カテゴリのインジェクションパターン検出
  2. 02テキスト、ファイル、ディレクトリのスキャン
  3. 03リスクの説明と推奨事項を提示
  4. 04SARIF 2.1.0形式で出力
  5. 05guardbee.ymlによる設定

活用シーン

  1. 01インデックス登録前のRAG文書の確認
  2. 02モデルによる取得前のウェブページ検査
  3. 03ナレッジベースのCIパイプラインへのコンテンツ検査追加

MCP 対応

テキスト、ファイル、ディレクトリのスキャンと、対応パターンの一覧表示を行うMCPツールを提供します。コンテンツのスキャンとSARIF出力にはコマンドラインも利用できます。

設定

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

mcp.json · 共通設定
{
"mcpServers": {
"4hmetuyar-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-scanner0.2.2

ツール

4

掲載時のツール一覧 · 2 週間前に更新

パラメーター型必須説明
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_phrase高「以前の指示を無視/破棄/忘れる」といった典型的な上書きフレーズ
instruction-overrideinstruction_override_tr高トルコ語の表現:「önceki talimatları yok say / unut / görmezden gel」
instruction-overridedan_mode高脱獄用ペルソナ「DAN mode」を求めるもの
instruction-overridebypass_safety高モデルに安全対策/ガードレールを回避または無効化するよう指示するもの
role-spoofingsystem_role_spoof中コンテンツ内の行頭にある、偽の「System:」ロールラベル
role-spoofingchat_template_marker_injection高コンテンツ内の生のチャットテンプレート制御トークン(<|im_start|>、[INST])
role-spoofingsystem_tag高データをシステムメッセージに見せかけようとする <system> タグ
hidden-texthidden_zero_width_chars中ゼロ幅スペース/ワードジョイナー(U+200B/U+2060)— 人間のレビュアーには見えないテキスト
hidden-textunicode_tag_smuggling重大隠しテキストを含む不可視の Unicode タグ文字(U+E0000–E007F)。🏴󠁧󠁢󠁥󠁮󠁧󠁿 などの旗絵文字は除外されます
hidden-textbidi_control_chars中テキストの表示順と読み取り順を異ならせる双方向制御/分離文字
hidden-textcss_hidden_text_with_instruction高指示のような文言を含む display:none/白地に白文字の要素
hidden-texthtml_comment_instruction高指示のような文言を含む HTML コメント
direct-addressdirect_address_to_ai中コンテンツが「AI」/「アシスタント」に直接呼びかけるもの
exfiltrationexfiltration_url_template_in_image高{{...}}/${...} テンプレートを含む Markdown 画像 URL — データ流出用ビーコン
exfiltrationreveal_system_prompt_request高モデルにシステムプロンプトの開示を求める文
exfiltrationreveal_system_prompt_tr高トルコ語の表現:「sistem istemini göster」
exfiltrationsend_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 が役に立った場合は、リポジトリに ⭐ を付けていただくと、ほかの人にも見つけてもらいやすくなります。

コメント

MCP は初めてですか?

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

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