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, 大语言模型, 安全测试, 攻击性安全, 无后门, 运行时操纵, 逆向工具