zeroFhacker/promptfuzz

GitHub: zeroFhacker/promptfuzz

基于遗传算法的 LLM 自动化红队测试框架,帮助安全团队在攻击者之前发现越狱、注入、信息泄露等漏洞。

Stars: 0 | Forks: 0

# PromptFuzz 🧨 [![Python 3.10+](https://img.shields.io/badge/Python-3.10+-3776AB?style=flat-square&logo=python&logoColor=white)](https://python.org) [![License: MIT](https://img.shields.io/badge/License-MIT-green.svg?style=flat-square)](LICENSE) [![OWASP LLM Top 10](https://img.shields.io/badge/OWASP-LLM%20Top%2010-red?style=flat-square)](https://owasp.org/www-project-top-10-for-large-language-model-applications/) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat-square)](CONTRIBUTING.md) ## 问题所在 你已经部署了一个基于 LLM 的产品。你添加了系统提示词。你认为它是安全的。 但其实不然。 攻击者正在对他们发现的每一个 LLM 产品发起系统化的 prompt 注入攻击。他们使用经过演化的、经过变异测试的 payload——而不是你手动测试的那些基本越狱手法。**PromptFuzz 能在规模上自动执行攻击者的操作,让你能抢先发现漏洞。** ## 它的功能 PromptFuzz 针对任何 LLM endpoint 运行对抗性 prompt 攻击活动,并准确报告哪些防护栏失效以及失效原因: | 模块 | 测试内容 | |--------|--------------| | `genetic_fuzzer` | 使用遗传算法演化绕过 payload | | `owasp_llm` | 完整的 OWASP LLM Top-10 测试覆盖 | | `injection_scanner` | 通过用户输入、RAG 上下文、工具输出进行 prompt 注入 | | `exfiltration_prober` | 测试系统提示词 / 训练数据是否可以被提取 | | `jailbreak_library` | 200+ 种精选越狱技术,已分类并评分 | | `role_confusion` | 人设劫持、DAN 变体、角色扮演漏洞利用 | 所有内容都会输出一份**每个防护栏类别的绕过率**以及一份**带有风险评分的 HTML 报告**。 ## 演示 ``` $ promptfuzz scan --target openai --model gpt-4o --system-prompt system.txt [*] PromptFuzz v1.0.0 — LLM Security Testing Framework [*] Target model: gpt-4o [*] System prompt: loaded (342 tokens) [*] Running OWASP LLM Top-10 suite... [LLM01] Prompt Injection ........... 3/20 bypassed (15%) ⚠️ [LLM02] Insecure Output Handling ... 0/10 bypassed (0%) ✅ [LLM06] Sensitive Info Disclosure .. 2/15 bypassed (13%) ⚠️ [LLM07] Insecure Plugin Design ..... N/A [LLM09] Overreliance ............... 5/10 triggered (50%) 🔴 [*] Running genetic fuzzer (50 generations)... [!] Bypass found at generation 12 — payload saved [!] Bypass found at generation 31 — payload saved [*] Overall bypass rate: 18.4% [*] Risk level: HIGH [*] Report saved to reports/gpt4o_20240115_143022/ ├── report.html (full interactive report) ├── report.json (machine-readable) └── bypasses/ (all successful payloads) ``` ## 安装 ``` git clone https://github.com/zeroFhacker/promptfuzz.git cd promptfuzz python3 -m venv venv source venv/bin/activate pip install -r requirements.txt cp config.example.yaml config.yaml # 将你的 LLM API 密钥添加到 config.yaml ``` ## 用法 ``` # 使用 system prompt 针对 OpenAI 进行测试 promptfuzz scan --target openai --model gpt-4o --system-prompt system.txt # 仅运行 OWASP LLM Top-10 测试 promptfuzz scan --target openai --modules owasp # 仅运行 genetic fuzzer promptfuzz scan --target openai --modules genetic --generations 100 # 测试自定义 endpoint (任何 OpenAI 兼容的 API) promptfuzz scan --target custom --endpoint https://your-api.com/v1 --model your-model # 列出所有可用的 attack module promptfuzz modules list # 显示库中的所有 jailbreak 技术 promptfuzz payloads list --category role_confusion ``` ## 支持的目标 | 目标 | 模型 | |--------|--------| | OpenAI | gpt-4o, gpt-4-turbo, gpt-3.5-turbo | | Anthropic | claude-3-5-sonnet, claude-3-opus | | Google | gemini-1.5-pro, gemini-1.5-flash | | Ollama | 任何本地模型 (llama3, mistral, 等) | | 自定义 | 任何兼容 OpenAI 的 endpoint | ## 架构 ``` promptfuzz/ ├── promptfuzz/ │ ├── cli.py # Click CLI entrypoint │ ├── engine.py # Scan orchestrator │ ├── models.py # Data models │ ├── llm_client.py # Multi-provider LLM client │ ├── modules/ │ │ ├── base.py # BaseModule abstract class │ │ ├── genetic_fuzzer.py # Genetic algorithm payload evolution │ │ ├── owasp_llm.py # OWASP LLM Top-10 test suite │ │ ├── injection_scanner.py # Prompt injection tests │ │ ├── exfiltration.py # System prompt extraction tests │ │ └── role_confusion.py # Persona hijacking tests │ ├── payloads/ │ │ ├── loader.py # Payload library loader │ │ ├── jailbreaks.yaml # 200+ jailbreak techniques │ │ ├── injections.yaml # Injection payloads │ │ └── exfiltration.yaml # Data extraction payloads │ ├── utils/ │ │ ├── judge.py # LLM-as-judge bypass detector │ │ ├── mutator.py # Payload mutation engine │ │ └── rate_limiter.py # API rate limiting │ └── reporters/ │ ├── json_reporter.py │ └── html_reporter.py ├── tests/ ├── config.example.yaml └── requirements.txt ``` ## 遗传模糊测试器的工作原理 大多数越狱工具使用静态 payload。PromptFuzz 则是对它们进行演化: 1. **种子种群** — 从 20 种已知的绕过技术开始 2. **适应度函数** — 发送每个 payload,使用 LLM 裁决器对响应进行评分 3. **选择** — 保留最有效的前 50% payload 4. **交叉** — 组合成功 payload 的元素 5. **变异** — 随机修改措辞、框架和编码 6. **重复** — 运行 N 代,保存发现的每一个绕过方法 这能发现静态 payload 列表完全遗漏的新型绕过方法。 ## OWASP LLM Top-10 覆盖范围 | ID | 漏洞 | 已覆盖 | |----|--------------|---------| | LLM01 | Prompt 注入 | ✅ | | LLM02 | 不安全的输出处理 | ✅ | | LLM03 | 训练数据污染 | ⚠️ 部分 | | LLM04 | 模型拒绝服务 | ✅ | | LLM05 | 供应链漏洞 | ❌ 路线图中 | | LLM06 | 敏感信息泄露 | ✅ | | LLM07 | 不安全的插件设计 | ✅ | | LLM08 | 过度授权 | ✅ | | LLM09 | 过度依赖 | ✅ | | LLM10 | 模型窃取 | ⚠️ 部分 | ## 道德使用 PromptFuzz 适用于: - 测试自有 LLM 部署的安全团队 - 获得书面授权的红队人员 - 研究 LLM 安全性的研究人员 - 在规定范围内的漏洞赏金猎人 **切勿对您不拥有或未获得明确书面许可的 LLM 系统进行测试。** ## 许可证 MIT
标签:AI安全, AI风险缓解, Chat Copilot, CISA项目, DAN攻击, Fuzzing, LLM安全测试, OpenAI GPT-4, OWASP LLM Top 10, Petitpotam, Python, 代码生成, 反取证, 大语言模型安全, 安全评估, 数据泄露测试, 无后门, 机密管理, 渗透测试工具, 系统提示词提取, 红队框架, 自动化红队, 角色混淆, 越狱库, 逆向工具, 遗传算法, 风险报告