DodiBadshah/py-prompt-injection

GitHub: DodiBadshah/py-prompt-injection

针对 LLM 的黑盒 prompt injection 自动化测试工具,将攻击 payload 映射到 OWASP LLM Top 10 并生成安全报告。

Stars: 1 | Forks: 0

# py-prompt-injection [![CI](https://static.pigsec.cn/wp-content/uploads/repos/2026/06/1c5ec2c13b001710.svg)](https://github.com/DodiBadshah/py-prompt-injection/actions/workflows/ci.yml) [![Python](https://img.shields.io/badge/python-3.11%2B-blue)](https://www.python.org/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) [![Docs](https://img.shields.io/badge/docs-live-brightgreen)](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, 大语言模型, 安全规则引擎, 无后门, 逆向工具