MalloryAnn/prompt-injection-defenses

GitHub: MalloryAnn/prompt-injection-defenses

基于 Protect AI 的 LLM Guard 工具包实现的输入边界 Prompt 注入检测演示项目,利用 ML 模型对用户输入进行风险评估与拦截。

Stars: 0 | Forks: 0

# 使用 LLM Guard 进行 Prompt 注入检测 ## 目录 - [概述](#overview) - [安全背景](#security-context-prompt-injection) - [系统架构](#system-architecture) - [运行项目](#running-the-project) - [参考资料](#references) ## 概述 本仓库演示了如何使用 Protect AI 的 `llm-guard` 工具包进行输入级别的 Prompt 注入检测。 该项目实现了一个输入边界安全过滤器,在将用户 prompt 传递给生成式大型语言模型(LLM)之前对其进行评估。系统会分配一个数值风险分数,并根据可配置的检测阈值做出允许/阻止的决策。 本实现基于 [`tldrsec/prompt-injection-defenses`](https://github.com/tldrsec/prompt-injection-defenses) 仓库中提出的分类法,专门专注于基于检测的缓解措施,而不是运行时 Guardrails 或权限隔离。 ## 仓库包含内容 | 组件 | 描述 | |------------|-------------| | `demo.py` | 独立的 Python 实现 | | `demo.ipynb` | 交互式 Jupyter notebook 版本 | | `requirements.txt` | 可复现的依赖配置 | | Virtual Environment | 干净的依赖隔离 | ## 目标受众 - 学习 LLM 安全的学生 - 探索 Prompt 注入防御的工程师 - 研究输入边界过滤的研究人员 ## 安全背景:Prompt 注入 Prompt 注入是一类攻击,其中对抗性指令被嵌入到用户输入或外部检索的文本中,旨在覆盖系统行为。 由于大型语言模型将指令和数据都作为自然语言进行处理,因此恶意指令可能会被插入到原本合法的内容中。 ### 常见攻击目标 - 覆盖开发者或系统指令 - 提取隐藏的系统 Prompt - 触发非预期的工具执行 - 窃取敏感信息 ## 系统架构 本项目使用 `llm-guard` 中的 `PromptInjection` 扫描器实现了一个输入级检测层。 ### 所用模型 [`protectai/deberta-v3-base-prompt-injection-v2`](https://github.com/protectai/llm-guard) 该模型分析 Prompt 并估算其包含注入式指令的概率。 ### 扫描器输出 扫描器返回: ``` sanitized_prompt, is_valid, risk_score ``` | 返回值 | 描述 | | ------------------ | ------------------------------------------- | | `sanitized_prompt` | 清理后的输入版本 | | `is_valid` | 布尔值的允许/阻止决策 | | `risk_score` | 介于 `0.0` 和 `1.0` 之间的数值概率 | ### 决策逻辑 检测阈值是可配置的。 在本实现中: ``` threshold = 0.5 ``` 以下 Prompt: ``` risk_score >= 0.5 ``` - 它们被分类为恶意,并可以在到达 LLM 之前被阻止。 - 这种检测与生成之间的分离减少了 LLM 集成应用的攻击面。 ## 运行项目 ### 步骤 1 — 克隆仓库 ``` git clone https://github.com/MalloryAnn/prompt-injection-defenses.git cd prompt-injection-defenses ``` ### 步骤 2 — 创建虚拟环境 macOS / Linux: ``` python3 -m venv venv source venv/bin/activate ``` Windows(Powershell) ``` python -m venv venv venv\Scripts\Activate.ps1 ``` Windows (Command Prompt) ``` python -m venv venv venv\Scripts\activate ``` ### 步骤 3 — 安装依赖 ``` pip install -r requirements.txt ``` ``` pip install "numpy<2" ``` ## 执行选项 ### 选项 A - 运行基础测试 1 脚本 (demo.py) ``` python3 demo.py ``` 此版本适用于基于终端的快速执行。 ### 选项 B - 运行 Jupyter 综合笔记本 (demo.ipynb) 打开 Jupyter ``` jupyter notebook ``` **然后打开** ``` demo.ipynb ``` ## 仓库结构 | 文件 | 描述 | |------|-------------| | `demo.py` | 独立脚本,对预定义的测试 prompt 运行 Prompt 注入检测,并将结果打印到终端。 | | `demo.ipynb` | 检测器的交互式笔记本版本,允许逐步执行和测试(包含测试 1–6)。 | | `requirements.txt` | 列出运行项目所需的确切 Python 包。 | | `.gitignore` | 防止不必要的本地文件被上传到 GitHub。 | ## 参考资料 本实现和里程碑 1 基于当前 LLM 安全领域的学术和开源工作,包括: 1. tldrsec. *Prompt Injection Defenses.* Available at: https://github.com/tldrsec/prompt-injection-defenses 2. Protect AI. *LLM Guard Toolkit.* Available at: https://github.com/protectai/llm-guard 3. Gong, Neil. *Securing LLM Agents Against Prompt Injection Attacks.* Duke University, 2025. Available at: https://people.duke.edu/~zg70/code/PromptInjection.pdf
标签:AI安全, AMSI绕过, Chat Copilot, DLL 劫持, LLM Guard, NoSQL, Protect AI, Python, Streamlit, 人工智能, 大语言模型, 威胁检测, 安全过滤, 提示注入, 无后门, 用户模式Hook绕过, 网络安全, 访问控制, 输入边界检测, 逆向工具, 隐私保护, 集群管理, 风险评分