DodiBadshah/py-prompt-injection-2025

GitHub: DodiBadshah/py-prompt-injection-2025

一个基于 LangChain 和 OWASP LLM Top 10 2025 标准的黑盒大语言模型安全评估套件,用于自动化执行 Prompt Injection 测试。

Stars: 0 | Forks: 0

# py-prompt-injection-2025 [![CI](https://github.com/DodiBadshah/py-prompt-injection-2025/actions/workflows/ci.yml/badge.svg)](https://github.com/DodiBadshah/py-prompt-injection-2025/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-2025/) 一个针对 LLM 的黑盒 prompt injection 测试套件,映射到 OWASP LLM Top 10 2025。这是四阶段套件中的第二阶段。它基于第一阶段进行了扩展,引入了 LangChain 编排,包含了五个更新的 OWASP 2025 类别,并在七个模型和五种架构家族中测试了 30 个结构化攻击 payload。 **[完整文档](https://dodibadshah.github.io/py-prompt-injection-2025/)** **[第二阶段研究论文](https://dodibadshah.github.io/py-prompt-injection-2025/phase2-findings.html)** ## 为什么会有这个项目 OWASP LLM Top 10 2025 引入了新的类别,包括 system prompt 泄露、不当输出处理,以及更新的过度授权场景,这些都是 2023-24 版本中没有涵盖的。第一阶段是基于 2023-24 框架对模型进行的测试。第二阶段将 payload 目录更新到了 2025 类别,并用 LangChain 编排取代了原始的 API 调用,使该测试套件为未来阶段中的 agentic 评估做好了准备。 ## 架构 ``` payloads/catalog/*.yaml --> payloads/loader.py --> runner/runner.py / \ LangChain Anthropic Adapter LangChain Ollama Adapter \ / scoring/engine.py (Generation 2) | reporting/ (HTML) + MLflow ``` ## OWASP LLM Top 10 2025 覆盖范围 | ID | 类别 | Payload 数量 | |----|----------|----------| | LLM01:2025 | Prompt Injection | 6 | | LLM02:2025 | Sensitive Information Disclosure | 6 | | LLM05:2025 | Improper Output Handling | 6 | | LLM06:2025 | Excessive Agency | 6 | | LLM07:2025 | System Prompt Leakage | 6 | ## 结果摘要 | 模型 | 家族 | 通过率 | 通过数 | 失败数 | |---|---|---|---|---| | claude-haiku-4-5 | Anthropic | 90.0% | 27/30 | 3 | | llama3.1:8b | Meta | 83.3% | 25/30 | 5 | | llama3.2:3b | Meta | 73.3% | 22/30 | 8 | | gemma2:9b | Google | 66.7% | 20/30 | 10 | | gemma2:2b | Google | 43.3% | 13/30 | 17 | | phi3:mini | Microsoft | 40.0% | 12/30 | 18 | | mistral:7b | Mistral | 30.0% | 9/30 | 21 | 研究论文中记录了 15 个已确认的误报,并提供了每个模型修正后的通过率。 ## 快速开始 ### 云端模型 要求:Python 3.11+,一个 Anthropic API key。 ``` git clone https://github.com/DodiBadshah/py-prompt-injection-2025.git cd py-prompt-injection-2025 python -m venv .venv .venv\Scripts\activate pip install -e ".[dev]" cp .env.example .env ``` 针对 Claude Haiku 运行所有 payload: ``` python -m llm_probe_2025.cli.main --model claude-haiku-4-5 ``` ### 通过 Ollama 运行本地模型 无需 API key。完全在你的机器上运行。 ``` # 从 https://ollama.com 安装 Ollama ollama pull mistral:7b ollama pull llama3.1:8b ``` 针对本地模型运行完整套件: ``` python -m llm_probe_2025.cli.main --model mistral:7b python -m llm_probe_2025.cli.main --model llama3.1:8b ``` 支持的本地模型:`mistral:7b`, `phi3:mini`, `gemma2:9b`, `gemma2:2b`, `llama3.1:8b`, `llama3.2:3b` 输出:HTML 报告将写入 `reports/`。 ## 示例输出 ``` Running 30 payloads against ollama/mistral:7b Category: all Results: 9/30 payloads passed. Report written to reports/report-20260622-233500-mistral-7b.html ``` ## 项目结构 ``` llm_probe_2025/ adapters/ LangChain model adapters (Anthropic, Ollama) cli/ Typer CLI entry point payloads/ YAML catalog and loader reporting/ Jinja2 HTML reporter runner/ Orchestration and MLflow logging scoring/ Generation 2 payload-aware scoring engine config.py Environment and settings exceptions.py Custom exception classes schemas.py Pydantic v2 data contracts tests/ pytest suite (50 tests) .github/workflows/ CI and docs deployment pipelines docs/ MkDocs source ``` ## 开发 ``` pytest tests/ --no-cov -v # run all 50 tests ``` CI 通过 GitHub Actions 在每次推送时自动运行。 ## 安全性 本项目会处理 LLM API key,并针对线上模型执行 prompt injection payload。代码库已执行了以下检查: - `bandit` - 整个代码库中没有高严重性问题 - `pip-audit` - 所有依赖项中不存在已知的 CVE - `detect-secrets` - 未检测到任何凭证或 secrets - YAML 加载全程使用 `safe_load`,防止任意代码执行 - 已验证 `.env` 不存在于所有 git 历史记录中 ## 路线图 本项目是四阶段 LLM 安全组合的第二阶段。 | 阶段 | 仓库 | OWASP 覆盖范围 | 状态 | |---|---|---|---| | 第一阶段 | [py-prompt-injection](https://github.com/DodiBadshah/py-prompt-injection) | LLM01, LLM02, LLM06, LLM08 (2023-24) | 完成 | | 第二阶段 | [py-prompt-injection-2025](https://github.com/DodiBadshah/py-prompt-injection-2025) | LLM01, LLM02, LLM05, LLM06, LLM07 (2025) | 完成 | | 第三阶段 | py-rag-security | LLM03:2025, LLM08:2025, LLM09:2025 | 计划中 | | 第四阶段 | py-llm-load | LLM04:2025, LLM10:2025 | 计划中 | ### 第三阶段:RAG 安全评估框架 目标仓库:`github.com/DodiBadshah/py-rag-security` 基于合规文档语料库的生产级 RAG pipeline,采用混合检索, Cohere 重排序,LLM-as-judge 评分,并部署在 Azure Container Apps 上。 - **LLM03:2025 Supply Chain:** 测试注入到检索存储中的投毒文档是否会出现在模型响应中 - **LLM09:2025 Misinformation:** 测试有根据的 RAG 响应是否会被操纵,从而产生错误但自信的输出 ### 第四阶段:负载与资源测试 目标仓库:`github.com/DodiBadshah/py-llm-load` 添加负载测试基础设施,以覆盖剩下两个需要并发和资源监控的 OWASP 类别。 从而在整个套件中完成对 OWASP LLM Top 10 2025 的全面覆盖。 - **LLM04:2025 Data and Model Poisoning** - **LLM10:2025 Unbounded Consumption** ## 许可证 MIT
标签:AI风险缓解, DLL 劫持, LangChain, MLflow, OWASP LLM Top 10, 反取证, 大语言模型, 安全评估, 轻量级, 逆向工具, 黑盒测试