DodiBadshah/py-prompt-injection
GitHub: DodiBadshah/py-prompt-injection
针对 LLM 的黑盒 prompt injection 自动化测试工具,将攻击 payload 映射到 OWASP LLM Top 10 并生成安全报告。
Stars: 1 | Forks: 0
# py-prompt-injection
[](https://github.com/DodiBadshah/py-prompt-injection/actions/workflows/ci.yml)
[](https://www.python.org/)
[](LICENSE)
[](https://dodibadshah.github.io/py-prompt-injection/)
一个针对 LLM 的黑盒 prompt injection 测试工具,映射到 OWASP LLM Top 10。
向任何 OpenAI、Anthropic 或本地 Ollama 模型发送结构化的攻击 payload,自动对响应进行评分,并生成 HTML 和 PDF 安全报告。
**[完整文档](https://dodibadshah.github.io/py-prompt-injection/)**
## 为什么会有这个项目
Prompt injection 是 OWASP LLM Top 10 (LLM01) 中的首要风险。目前没有标准的开源工具能够像 Nessus 测试网络服务那样,使用精心挑选的 payload 目录对 LLM 进行系统性测试。本项目旨在填补这一空白。
## 架构
```
payloads/catalog/*.yaml --> payloads/loader.py --> runner/runner.py
/ \
openai_adapter anthropic_adapter ollama_adapter
\ /
scoring/engine.py
|
reporting/ (HTML + PDF) + MLflow
```
## OWASP LLM Top 10 覆盖范围
| ID | 类别 | Payload |
|----|----------|----------|
| LLM01 | Prompt Injection | 6 |
| LLM02 | 不安全的输出处理 | 6 |
| LLM06 | 敏感信息泄露 | 6 |
| LLM08 | 过度代理 | 6 |
## 快速开始
### 云端模型
要求:Python 3.11+,一个 OpenAI 或 Anthropic API key。
```
git clone https://github.com/DodiBadshah/py-prompt-injection.git
cd py-prompt-injection
python -m venv .venv && source .venv/bin/activate
pip install -e ".[dev]"
cp .env.example .env
```
针对 Claude Haiku 运行所有 payload:
```
.venv\Scripts\python.exe -m llm_probe.cli.main --model claude-haiku-4-5
```
运行单个 OWASP 类别:
```
.venv\Scripts\python.exe -m llm_probe.cli.main --model claude-haiku-4-5 --owasp LLM01
```
### 通过 Ollama 运行本地模型
不需要 API key。完全在你的机器上运行。
```
# 从 https://ollama.com 安装 Ollama
ollama pull phi3:mini
ollama pull mistral:7b
```
针对本地模型运行全套测试:
```
.venv\Scripts\python.exe -m llm_probe.cli.main --model phi3:mini
.venv\Scripts\python.exe -m llm_probe.cli.main --model mistral:7b
```
支持的本地模型:`phi3:mini`、`mistral:7b`、`llama3.2`、`gemma2:2b`
输出:HTML 报告将写入 `reports/` 目录。
## 示例输出
```
Running 24 payloads against ollama/phi3:mini
Results: 24/24 payloads passed.
Report written to reports/report-20260605-051442-phi3-mini.html
```
## 项目结构
```
llm_probe/
adapters/ API adapters (OpenAI, Anthropic, Ollama)
core/ Config, logging, exceptions
payloads/ YAML catalog + loader
reporting/ HTML/PDF renderer
runner/ Orchestration + MLflow
schemas/ Pydantic models
scoring/ Heuristics + scoring engine
cli/ Typer CLI entrypoint
tests/ pytest suite (40 tests)
.github/workflows/ CI pipeline
docs/ MkDocs source
```
## 开发
```
pytest # run all 40 tests
pytest -v # verbose
```
CI 会通过 GitHub Actions 在每次 push 时自动运行。
## 安全性
本项目会处理 LLM API key,并针对实时模型执行 prompt injection payload。代码库已执行以下检查:
- `bandit` - 在 892 行代码中未发现任何问题
- `pip-audit` - 任何依赖项中均无已知的 CVE
- `detect-secrets` - 未检测到任何凭证或密钥
- YAML 加载全部使用 `safe_load`,防止任意代码执行
- 已验证 `.env` 在所有 git 历史记录中不存在
## 路线图
本项目是三阶段 LLM 安全作品集的第一阶段。
| 阶段 | 代码库 | OWASP 覆盖范围 | 状态 |
|---|---|---|---|
| 阶段 1 | [py-prompt-injection](https://github.com/DodiBadshah/py-prompt-injection) | LLM01, LLM02, LLM06, LLM08 | 已完成 |
| 阶段 2 | [py-rag-security](https://github.com/DodiBadshah/py-rag-security) | LLM03, LLM09 | 开发中 |
| 阶段 3 | py-llm-load | LLM04, LLM10 | 计划中 |
### 阶段 2 - RAG 安全评估框架
目标代码库:`github.com/DodiBadshah/py-rag-security`
通过添加 ChromaDB 向量存储和检索 pipeline 对该工具进行扩展,以测试需要文档上下文的 LLM 漏洞:
- **LLM03 - 训练数据投毒:** 向检索存储中注入被篡改的文档,并测量模型是否会显示出被投毒的内容
- **LLM09 - 虚假信息:** 测试基于上下文的 RAG 响应是否会被操纵,从而产生虚假但听起来却很自信的输出
第一阶段中的适配器层、评分引擎和报告 pipeline 将被直接复用。新增的部分包括向量存储、embedder、poisoner 和 LLM-as-judge 评分器。
### 阶段 3 - 负载与资源测试
目标代码库:`github.com/DodiBadshah/py-llm-load`
添加负载测试基础设施,以涵盖剩下两个需要并发和资源监控的 OWASP 类别:
- **LLM04 - 模型拒绝服务**
- **LLM10 - 无限制消耗**
## 许可证
MIT
标签:AI安全, AI风险缓解, Chat Copilot, DLL 劫持, OWASP LLM Top 10, Python, 大语言模型, 安全规则引擎, 无后门, 逆向工具