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绕过, 网络安全, 访问控制, 输入边界检测, 逆向工具, 隐私保护, 集群管理, 风险评分