DodiBadshah/py-prompt-injection-2025
GitHub: DodiBadshah/py-prompt-injection-2025
一个基于 LangChain 和 OWASP LLM Top 10 2025 标准的黑盒大语言模型安全评估套件,用于自动化执行 Prompt Injection 测试。
Stars: 0 | Forks: 0
# py-prompt-injection-2025
[](https://github.com/DodiBadshah/py-prompt-injection-2025/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://dodibadshah.github.io/py-prompt-injection-2025/)
一个针对 LLM 的黑盒 prompt injection 测试套件,映射到 OWASP LLM Top 10 2025。这是四阶段套件中的第二阶段。它基于第一阶段进行了扩展,引入了 LangChain 编排,包含了五个更新的 OWASP 2025 类别,并在七个模型和五种架构家族中测试了 30 个结构化攻击 payload。
**[完整文档](https://dodibadshah.github.io/py-prompt-injection-2025/)**
**[第二阶段研究论文](https://dodibadshah.github.io/py-prompt-injection-2025/phase2-findings.html)**
## 为什么会有这个项目
OWASP LLM Top 10 2025 引入了新的类别,包括 system prompt 泄露、不当输出处理,以及更新的过度授权场景,这些都是 2023-24 版本中没有涵盖的。第一阶段是基于 2023-24 框架对模型进行的测试。第二阶段将 payload 目录更新到了 2025 类别,并用 LangChain 编排取代了原始的 API 调用,使该测试套件为未来阶段中的 agentic 评估做好了准备。
## 架构
```
payloads/catalog/*.yaml --> payloads/loader.py --> runner/runner.py
/ \
LangChain Anthropic Adapter LangChain Ollama Adapter
\ /
scoring/engine.py (Generation 2)
|
reporting/ (HTML) + MLflow
```
## OWASP LLM Top 10 2025 覆盖范围
| ID | 类别 | Payload 数量 |
|----|----------|----------|
| LLM01:2025 | Prompt Injection | 6 |
| LLM02:2025 | Sensitive Information Disclosure | 6 |
| LLM05:2025 | Improper Output Handling | 6 |
| LLM06:2025 | Excessive Agency | 6 |
| LLM07:2025 | System Prompt Leakage | 6 |
## 结果摘要
| 模型 | 家族 | 通过率 | 通过数 | 失败数 |
|---|---|---|---|---|
| claude-haiku-4-5 | Anthropic | 90.0% | 27/30 | 3 |
| llama3.1:8b | Meta | 83.3% | 25/30 | 5 |
| llama3.2:3b | Meta | 73.3% | 22/30 | 8 |
| gemma2:9b | Google | 66.7% | 20/30 | 10 |
| gemma2:2b | Google | 43.3% | 13/30 | 17 |
| phi3:mini | Microsoft | 40.0% | 12/30 | 18 |
| mistral:7b | Mistral | 30.0% | 9/30 | 21 |
研究论文中记录了 15 个已确认的误报,并提供了每个模型修正后的通过率。
## 快速开始
### 云端模型
要求:Python 3.11+,一个 Anthropic API key。
```
git clone https://github.com/DodiBadshah/py-prompt-injection-2025.git
cd py-prompt-injection-2025
python -m venv .venv
.venv\Scripts\activate
pip install -e ".[dev]"
cp .env.example .env
```
针对 Claude Haiku 运行所有 payload:
```
python -m llm_probe_2025.cli.main --model claude-haiku-4-5
```
### 通过 Ollama 运行本地模型
无需 API key。完全在你的机器上运行。
```
# 从 https://ollama.com 安装 Ollama
ollama pull mistral:7b
ollama pull llama3.1:8b
```
针对本地模型运行完整套件:
```
python -m llm_probe_2025.cli.main --model mistral:7b
python -m llm_probe_2025.cli.main --model llama3.1:8b
```
支持的本地模型:`mistral:7b`, `phi3:mini`, `gemma2:9b`, `gemma2:2b`, `llama3.1:8b`, `llama3.2:3b`
输出:HTML 报告将写入 `reports/`。
## 示例输出
```
Running 30 payloads against ollama/mistral:7b
Category: all
Results: 9/30 payloads passed.
Report written to reports/report-20260622-233500-mistral-7b.html
```
## 项目结构
```
llm_probe_2025/
adapters/ LangChain model adapters (Anthropic, Ollama)
cli/ Typer CLI entry point
payloads/ YAML catalog and loader
reporting/ Jinja2 HTML reporter
runner/ Orchestration and MLflow logging
scoring/ Generation 2 payload-aware scoring engine
config.py Environment and settings
exceptions.py Custom exception classes
schemas.py Pydantic v2 data contracts
tests/ pytest suite (50 tests)
.github/workflows/ CI and docs deployment pipelines
docs/ MkDocs source
```
## 开发
```
pytest tests/ --no-cov -v # run all 50 tests
```
CI 通过 GitHub Actions 在每次推送时自动运行。
## 安全性
本项目会处理 LLM API key,并针对线上模型执行 prompt injection payload。代码库已执行了以下检查:
- `bandit` - 整个代码库中没有高严重性问题
- `pip-audit` - 所有依赖项中不存在已知的 CVE
- `detect-secrets` - 未检测到任何凭证或 secrets
- YAML 加载全程使用 `safe_load`,防止任意代码执行
- 已验证 `.env` 不存在于所有 git 历史记录中
## 路线图
本项目是四阶段 LLM 安全组合的第二阶段。
| 阶段 | 仓库 | OWASP 覆盖范围 | 状态 |
|---|---|---|---|
| 第一阶段 | [py-prompt-injection](https://github.com/DodiBadshah/py-prompt-injection) | LLM01, LLM02, LLM06, LLM08 (2023-24) | 完成 |
| 第二阶段 | [py-prompt-injection-2025](https://github.com/DodiBadshah/py-prompt-injection-2025) | LLM01, LLM02, LLM05, LLM06, LLM07 (2025) | 完成 |
| 第三阶段 | py-rag-security | LLM03:2025, LLM08:2025, LLM09:2025 | 计划中 |
| 第四阶段 | py-llm-load | LLM04:2025, LLM10:2025 | 计划中 |
### 第三阶段:RAG 安全评估框架
目标仓库:`github.com/DodiBadshah/py-rag-security`
基于合规文档语料库的生产级 RAG pipeline,采用混合检索,
Cohere 重排序,LLM-as-judge 评分,并部署在 Azure Container Apps 上。
- **LLM03:2025 Supply Chain:** 测试注入到检索存储中的投毒文档是否会出现在模型响应中
- **LLM09:2025 Misinformation:** 测试有根据的 RAG 响应是否会被操纵,从而产生错误但自信的输出
### 第四阶段:负载与资源测试
目标仓库:`github.com/DodiBadshah/py-llm-load`
添加负载测试基础设施,以覆盖剩下两个需要并发和资源监控的 OWASP 类别。
从而在整个套件中完成对 OWASP LLM Top 10 2025 的全面覆盖。
- **LLM04:2025 Data and Model Poisoning**
- **LLM10:2025 Unbounded Consumption**
## 许可证
MIT
标签:AI风险缓解, DLL 劫持, LangChain, MLflow, OWASP LLM Top 10, 反取证, 大语言模型, 安全评估, 轻量级, 逆向工具, 黑盒测试