BreadyBred/llm-redteam
GitHub: BreadyBred/llm-redteam
一个用于对兼容 OpenAI 接口的 LLM 进行 prompt 注入、越狱及间接注入等对抗性安全测试并生成评估报告的自动化框架。
Stars: 0 | Forks: 0
# llm-redteam
对抗性红队测试框架,用于测试任何兼容 OpenAI 的 LLM endpoint 是否存在
prompt injection、jailbreaks 以及通过 tool 输出进行的间接注入。
## 安装
```
pip install -r requirements.txt
```
需要 Python 3.11+。
## 用法
```
# 针对本地 Ollama 实例运行
python run.py --base-url http://localhost:11434/v1 --model llama3
# 针对 Anthropic 运行(通过 OpenAI-compat 层)
python run.py --base-url https://api.anthropic.com/v1 --api-key $KEY --model claude-sonnet-4-20250514
# 仅运行 jailbreak 类别,生成 HTML 报告
python run.py --categories jailbreak --html
# 通过 llm-firewall 路由并比较绕过率
python run.py --firewall --firewall-url http://localhost:8080
# 对模糊情况使用辅助 LLM judge 进行判断
python run.py --judge --judge-model gpt-4o
# 也可作为 module 使用
python -m llm_redteam --base-url http://localhost:11434/v1 --model llama3
```
## 架构
```
+------------------+
| run.py / |
| __main__.py |
+--------+---------+
|
+--------v---------+
| config.py | .env + argparse
+--------+---------+
|
+--------v---------+
| runner.py | orchestration loop
+--+-----+-----+--+
| | |
+-------------+ | +-------------+
| | |
+--------v-----+ +--------v-----+ +---------v----+
| corpus.py | | client.py | | scoring.py |
| (JSONL) | | (httpx) | | (heuristics) |
+--------------+ +------+-------+ +------+-------+
| |
+------v-------+ +------v-------+
| LLM endpoint | | judge.py |
| (any OpenAI- | | (optional) |
| compatible) | +--------------+
+--------------+
|
+----------v-----------+
| reporting/ |
| - json_report.py |
| - html_report.py |
| - audit_log.py |
+-----------+----------+
|
+--------v--------+
| outputs/ |
+-----------------+
```
## 语料库结构
攻击 prompt 以 JSONL 文件的形式存放在 `corpus/` 目录中,每个类别一个文件:
- `direct_injection.jsonl` — 覆盖 system prompt、泄露指令、强制输出
- `jailbreak.jsonl` — DAN、角色扮演、编码技巧、人格劫持
- `indirect_injection.jsonl` — 嵌入在模拟的 tool/RAG 响应中的 payload
每一行:
```
{"id": "di-001", "category": "direct_injection", "prompt": "...", "tags": ["system_override"]}
```
对于间接注入,`context` 字段会携带模拟的 tool 输出:
```
{"id": "ii-001", "category": "indirect_injection", "prompt": "Summarize this.", "context": "...[payload]...", "tags": ["tool_output"]}
```
## llm-firewall 集成
传入 `--firewall` 参数可将所有请求路由到本地的
[llm-firewall](https://github.com/example/llm-firewall) 实例。测试框架会将请求
发送到 firewall 代理,而不是直接发送给模型,然后
比较有 firewall 和无 firewall 的绕过率。
```
python run.py --firewall --firewall-url http://localhost:8080
```
摘要输出将同时显示直接绕过率和 firewall 绕过率。
## CI
GitHub Actions 会在每次推送到 master 分支时,针对内置的 mock server 运行完整的测试套件。
无需外部 API key —— mock server 会确定性地模拟
易受攻击和已设防的响应。
## 已知限制
- 评分启发式方法基于正则表达式,会遗漏细微的部分合规情况
- `--judge` 标志需要活跃的 LLM endpoint(会增加成本和延迟)
- Mock server 的响应过于简单 —— 真实模型会表现出更多样化的行为
- 尚不支持 streaming(响应在评分前会被完整收集)
- 仅在 Windows 上进行了测试;Linux/macOS 应该可以运行,但未经 CI 验证
标签:DLL 劫持, Python, 大语言模型, 安全测试, 攻击性安全, 无后门, 运行时操纵, 逆向工具