Prompt Injection Scanner

io.github.GuardBee由 GitHub 账号 GuardBee 发布v1.2.0更新于 Nov 3, 2026

Scans RAG content/scraped pages for indirect prompt injection

已验证STDIO仅桌面知识与记忆安全与监控

概览

AI 生成的概览

在内容进入模型上下文之前,扫描文本、文件和目录中的间接提示注入载荷。

可以做什么
  • 扫描文本字符串,例如 RAG 片段、抓取的网页或工具返回结果中的注入载荷
  • 扫描单个文件,或递归扫描知识库等目录,自动跳过 node_modules、.git、dist 和二进制文件
  • 按类别列出支持的检测模式
  • 给出带严重级别和处理建议的发现项,并可选输出 SARIF 供 CI 使用
适用场景
当助手会读取不可信内容(检索到的文档、抓取的网页、工具结果)时,可在信任这些内容前做一次启发式检查,识别指令覆盖、角色伪造、隐藏文本、直接对 AI 说话和外泄企图。
运行要求
通过 stdio 在本机运行,通常用 npx 从 npm 包启动,因此需要 Node.js。未声明认证、环境变量或请求头。可选的 LLM 判定器默认关闭,需配置 GUARDBEE_JUDGE_URL 和 GUARDBEE_JUDGE_MODEL 才会启用。
安装前请注意
检测结果是启发式文本模式匹配而非语义分析,每条结果仍应人工复核。遥测默认关闭;设置 GUARDBEE_TELEMETRY=1 会把服务器、工具、成功与否、耗时以及文件路径等短参数值发送给第三方。可选的判定器会把被扫描内容发送到所配置的端点,非本地端点需显式开启并仅限 https。

安装

在 SourceWeft 中

  1. 打开 控制台中的 Prompt Injection Scanner,将其添加到工作区。
  2. 为需要使用其工具的对话启用该服务。

Desktop only,通过 STDIO。 STDIO 服务会启动本地进程,因此需要 SourceWeft 桌面宿主。

其他 MCP 客户端

参照 仓库 中的启动说明。

README

@guardbee/mcp-prompt-injection-scanner

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

[npm version] [npm downloads] [License: MIT]

An MCP (Model Context Protocol) server that scans content — a RAG chunk, a scraped web page, a document — for indirect prompt injection payloads.

ai-code-scanner and mcp-server-auditor scan code; this package scans data. In classic prompt injection, the attacker writes a malicious prompt themselves; in indirect prompt injection, the attacker never talks to the model at all — instead they embed instructions in a document, web page, or tool result the model will later read. The moment the model pulls this content into its context via a RAG retrieval or a web fetch, the embedded instruction appears to carry the same authority as the user's own instructions.

Telemetry is off by default. With GUARDBEE_TELEMETRY=1 it sends the server, tool, success, duration and short parameter values such as a file path; longer strings and fields like content, token or password are replaced with a placeholder. See @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)

Features

  • 17 patterns, 5 categories — instruction-override, role-spoofing, hidden-text, direct-address, exfiltration. English and Turkish phrasing
  • The rules live in @guardbee/guard-core, shared with @guardbee/mcp-security-proxy, so a phrase this scanner reports is the same phrase the proxy blocks at runtime
  • Every finding includes why it's risky and what to do about it (recommendation) — not just "found it"
  • SARIF 2.1.0 output — CI/CD integration (e.g. auto-scanning a knowledge-base repo on every PR)
  • Config file support via guardbee.yml
  • 45 unit tests — a positive and a negative (false-positive) scenario for every pattern; known false-positive sources like emoji ZWJ sequences and ordinary display:none modals are specifically tested

Quick Start

Claude Desktop / MCP Client

json
{  "mcpServers": {    "guardbee-prompt-injection-scanner": {      "command": "npx",      "args": ["-y", "@guardbee/mcp-prompt-injection-scanner"]    }  }}

CLI (CI/CD — e.g. scan a RAG knowledge-base repo on every PR)

bash
npx @guardbee/mcp-prompt-injection-scanner scan ./knowledge-base --fail-on=high --format=sarif > results.sarif

MCP Tools

ToolDescription
scan_textScans a given text/document snippet
scan_fileScans a single file
scan_directoryRecursively scans a directory (e.g. a RAG knowledge base) (node_modules, .git, dist skipped automatically)
list_patternsLists all supported patterns by category

Detected Patterns

CategoryPatternSeverityWhat it means
instruction-overrideinstruction_override_phrasehighA classic override phrase like "ignore/disregard/forget previous instructions"
instruction-overrideinstruction_override_trhighThe Turkish form: "önceki talimatları yok say / unut / görmezden gel"
instruction-overridedan_modehighAsks for the "DAN mode" jailbreak persona
instruction-overridebypass_safetyhighTells the model to bypass or disable its safety measures / guardrails
role-spoofingsystem_role_spoofmediumA fake "System:" role label at the start of a line in the content
role-spoofingchat_template_marker_injectionhighRaw chat-template control tokens (<|im_start|>, [INST]) in the content
role-spoofingsystem_taghighA <system> tag that tries to pass data off as a system message
hidden-texthidden_zero_width_charsmediumZero-width space/word-joiner (U+200B/U+2060) — text hidden from a human reviewer
hidden-textunicode_tag_smugglingcriticalInvisible Unicode tag characters (U+E0000–E007F) carrying hidden text; flag emoji such as 🏴󠁧󠁢󠁥󠁮󠁧󠁿 are excluded
hidden-textbidi_control_charsmediumBidi override/isolate characters that make text display in a different order than it is read
hidden-textcss_hidden_text_with_instructionhighA display:none/white-on-white element containing instruction-like language
hidden-texthtml_comment_instructionhighAn HTML comment containing instruction-like language
direct-addressdirect_address_to_aimediumThe content directly addresses "the AI"/"the assistant"
exfiltrationexfiltration_url_template_in_imagehighA markdown image URL with a {{...}}/${...} template — a data-exfil beacon
exfiltrationreveal_system_prompt_requesthighA sentence asking the model to reveal its system prompt
exfiltrationreveal_system_prompt_trhighThe Turkish form: "sistem istemini göster"
exfiltrationsend_data_to_url_instructioncriticalAn explicit instruction ordering the model to send data to an external URL

These are heuristic findings — a static text-pattern scan, not a semantic/intent analysis. Designed for a low false-positive rate (e.g. emoji ZWJ sequences and ordinary display:none modals are specifically excluded), but every finding should still be reviewed manually.


LLM judge (optional)

The patterns know attack phrases; a paraphrased, indirect or translated instruction slips past them. --judge also has a model read each file, in chunks, and reports instructions aimed at an agent as judge_semantic_injection (high). The finding carries judge: { model, version, confidence }, also in SARIF properties. The judge only adds findings.

bash
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

It is off unless configured. Since the content goes to the endpoint, a non-local one needs --judge-allow-remote and https. On GuardBee's judge benchmark (50 English and Turkish samples), the patterns catch 16% of the attacks and qwen2.5:7b all of them, with no false positives.

Configuration (guardbee.yml)

yaml
prompt-injection-scanner:  fail-on: high       # any | critical | high | medium | low | none  max-files: 5000  exclude:    - ".test.ts"    - "fixtures/"

Development

bash
npm run buildnpm test             # 45 unit tests

License

MIT — GuardBee

Feedback

Questions, ideas, or a false positive? Start a thread in GitHub Discussions or open an issue. If GuardBee is useful to you, a ⭐ on the repository helps others find it.

来源:packages/prompt-injection-scanner/README.md,提交 8cc1e03

工具

4

scan_text

Scan a text string — a RAG chunk, a scraped web page, a document, a tool result — for indirect prompt injection payloads (instruction-override phrases, spoofed chat-template roles, hidden/invisible text, content addressing 'the AI' directly, data-exfiltration attempts) before it reaches a model's context.

输入参数labelcontent必填

scan_file

Scan a single file (a knowledge-base document, an HTML page, extracted text) for indirect prompt injection payloads

输入参数path必填

scan_directory

Recursively scan a directory — e.g. a RAG knowledge base or a corpus of scraped pages — for indirect prompt injection payloads. Automatically skips node_modules, .git, dist, and binary files.

输入参数path必填excludeincludemaxFiles

list_patterns

List all indirect prompt injection patterns that the scanner can detect, grouped by category

无需输入参数。

版本历史

13
  1. v1.2.0最新Nov 1, 2026
  2. v1.1.1Oct 30, 2026
  3. v1.0.2Oct 22, 2026
  4. v0.2.23Oct 21, 2026
  5. v0.2.22Oct 20, 2026
  6. v0.2.20Oct 19, 2026
  7. v0.2.19Oct 16, 2026
  8. v0.2.18Oct 15, 2026
  9. v0.2.16Oct 14, 2026
  10. v0.2.15Oct 14, 2026
  11. v0.2.13Oct 13, 2026
  12. v0.2.12Oct 11, 2026
  13. v0.2.11Oct 9, 2026

评分

已满足适用检查项的 90%

该评分衡量此收录条目的完整程度,依据注册中心条目、端点与公开来源计算得出。它不是对服务器本身的评价,也不表示服务器安全或当前可用:可连通性是带日期的检查结果,评分也不包含安装量或用户评价。

  • 近 30 天内可连通25 分
  • 已声明认证方式10 分

    请在注册中心条目中声明凭据请求头,或保持端点能够响应探测,以便判定其认证方式。

  • 已列出工具必需15 分
  • 描述必需15 分
  • 图标10 分
  • 文档15 分
  • 许可证10 分