dnyandeobharambe/owasp-llm-security
GitHub: dnyandeobharambe/owasp-llm-security
该项目将 OWASP LLM Top 10 的各项安全风险转化为基于 Python 和 Gemini API 的并排代码实现,填补了安全指南缺乏具体可运行缓解代码的工程空白。
Stars: 1 | Forks: 0
# OWASP LLM Top 10 — 实施指南
**大多数企业都在记录 OWASP LLM 风险。但几乎没有企业实施缓解措施。**
本仓库展示了具体的实施过程 — 提供可运行的 Python 代码,并排展示每一个
OWASP LLM Top 10 风险的易受攻击示例和生产级安全的缓解
示例。
基于 **Gemini API** 构建。不依赖特定框架。无需云环境配置即可在本地运行。
## 为什么创建这个仓库
Microsoft 记录了 MCP 的安全风险。
OWASP 记录了 LLM 的风险。
但没有人编写相应的代码。
这个仓库填补了这一空白 — 每一个风险都包含:
- 一个你可以运行并观察其**失效过程的易受攻击实现**
- 一个采用生产级安全模式的**缓解实现**
- 一份**README**,解释了攻击向量、其在企业环境中的重要性,
以及每个防御层背后的设计决策
## 文档与实现之间的差距
```
OWASP says: "Implement input validation to prevent prompt injection"
This repo shows: Pattern library + sanitizer + bounded prompt + LLM Judge
— running code, not a checklist
```
```
Microsoft says: "Use least privilege for MCP tool access"
This repo shows: Tool contract validation, typed interfaces, audit logging
— running code, not a diagram
```
## 实施状态
| 风险 | 标题 | 状态 | 关键模式 |
|------|-------|--------|-------------|
| LLM01 | Prompt Injection | ✅ 已完成 | 输入净化 + LLM Judge |
| LLM02 | 不安全的输出处理 | 🔄 进行中 | 输出 schema 验证 + Pydantic |
| LLM03 | 训练数据中毒 | 📋 计划中 | 数据血缘 + 验证 |
| LLM04 | 模型 DoS | 📋 计划中 | 速率限制 + token 预算 |
| LLM05 | 供应链 | 📋 计划中 | 依赖验证 |
| LLM06 | 敏感信息泄露 | 🔄 进行中 | Microsoft Presidio PII 清除 |
| LLM07 | 不安全的插件设计 | 📋 计划中 | MCP 工具契约验证 |
| LLM08 | 过度代理 | 🔄 进行中 | LangGraph 中的 HITL 门控 |
| LLM09 | 过度依赖 | 📋 计划中 | 置信度评分 + 人工审核 |
| LLM10 | 模型窃取 | 📋 计划中 | API 安全 + 速率限制 |
| MCP 安全 | MCP 特定风险 | 📋 计划中 | 迷惑代理 + token 透传 |
## OWASP LLM 风险如何映射到 MCP 攻击面
MCP (Model Context Protocol) 引入了一个特定的攻击面,这是
传统的 OWASP LLM 指南未能完全解决的。
| OWASP 风险 | MCP 攻击向量 | 实施方式 |
|------------|-------------------|----------------|
| LLM01 — Prompt Injection | MCP 工具响应中的恶意内容被注入到 agent 上下文中 | 在插入上下文之前对工具响应进行净化 |
| LLM06 — 敏感信息 | MCP 工具返回的 PII 泄露到 LLM 上下文或日志中 | 对所有工具响应进行 Presidio 清除 |
| LLM07 — 不安全的插件 | MCP 工具契约未经验证 — agent 使用错误的参数调用工具 | 类型化工具接口 + 契约验证 |
| LLM08 — 过度代理 | Agent 在未经人工批准的情况下调用破坏性的 MCP 工具 | HITL 门控 — 将建议和执行作为独立的节点 |
| 迷惑代理 | MCP 服务器被诱骗代表攻击者行事 | OAuth scopes + 每个工具的调用者验证 |
| Token 透传 | Agent 将其身份验证 token 传递给不应拥有它的 MCP 工具 | 每个工具使用限定范围的 token,绝不传递 agent token |
## 仓库结构
```
OWASP26/
├── llm_client.py
├── requirements.txt
├── .env
├── .env.example
├── .gitignore
├── README.md
└── LLM01-prompt-injection/
├── vulnerable.py
├── mitigated.py
└── README.md
```
## 快速开始
```
# 克隆
git clone https://github.com/dnyandeobharambe/owasp-llm-security
cd owasp-llm-security
# 安装
pip install -r requirements.txt
# 配置
cp .env.example .env
# 编辑 .env — 添加你的 GEMINI_API_KEY
# 运行 LLM01 — 观察 vulnerable 失败,mitigated 阻止
python LLM01-prompt-injection/vulnerable.py
python LLM01-prompt-injection/mitigated.py
```
## 贯穿所有示例的设计原则
**1. 易受攻击与缓解措施并排展示**
每个风险都包含两种实现。首先运行易受攻击的实现 — 观察
攻击是如何成功的。然后运行缓解后的实现 — 观察防御
是如何生效的。
**2. LLM Judge 独立性**
当使用辅助 LLM 验证输出时,它始终从源读取数据 — 绝不
与主模型共享上下文。共享上下文 = 形同虚设的橡皮图章。
独立性是确保验证真实有效的基础。
**3. 失败时拒绝(Fail closed),而非放行(Fail open)**
当防御层解析或验证失败时 — 拦截输出。
在不确定的情况下绝不放行。在失败时放行的安全系统
根本算不上安全系统。
**4. 审计一切**
每一次可疑的尝试、每一次被拦截的响应、每一个 Judge 的决策都会
带上会话 ID 和时间戳记录在案。你无法审计你没有记录的内容。
**5. 类型化接口优于原始字符串**
尽可能为输入和输出使用 Pydantic 模型。类型契约
可以减少攻击面并使违规行为显性化。
## 企业环境背景
这些模式可直接应用于:
- **Agentic AI 系统** — 拥有访问企业系统能力的 agent
- **RAG 流水线** — 从不受信任的来源摄取文档
- **MCP 服务器** — 连接到 ERP、CRM、数据库的 AI agent
- **面向客户的 AI** — 任何暴露于公共输入的 LLM
生产级企业 AI 中的治理层绝不仅仅是一个 PPT。
它是正在运行的代码 — HITL 门控、LLM Judge、PII 清洗器、审计追踪。
本仓库展示了它的真实面貌。
## 作者
**Dnyandeo Bharambe (Danny)** — 首席 AI 架构师
企业级 Agentic AI 系统 | LangGraph · MCP · RAG · LLMOps
- GitHub: [github.com/dnyandeobharambe](https://github.com/dnyandeobharambe)
- 博客: [mcpoverrag.hashnode.dev](https://mcpoverrag.hashnode.dev)
- LinkedIn: [linkedin.com/in/dnyandeo](https://linkedin.com/in/dnyandeo)
- 咨询: [topmate.io/dnyandeobharambe](https://topmate.io/dnyandeobharambe)
## 相关工作
- [企业级 Agentic 审计引擎](https://github.com/dnyandeobharambe/enterprise-agentic-audit-engine) — 生产环境中的 LangGraph + MCP + LLM Judge
- [Agentic 减肥引擎](https://github.com/dnyandeobharambe/agentic-diet-engine) — 带有 LangSmith 可观测性的高级 RAG
- [Microsoft MCP 安全指南](https://github.com/microsoft/mcp-for-beginners/blob/main/02-Security/README.md) — Microsoft 的 MCP 安全文档(本仓库实施了其中的模式)
## 相关工作
**OWASP MCP Top 10 实施**
映射到 OWASP MCP Top 10 的 MCP agent 生产级安全模式。
包含针对所有 10 项风险的可运行攻击演示。
github.com/dnyandeobharambe/mcp-security-patterns
这些仓库共同涵盖了两个 OWASP AI 安全框架:
- OWASP LLM Top 10 — LLM 应用程序中的风险
- OWASP MCP Top 10 — AI agent 协议中的风险
## 贡献
欢迎提交 PR — 特别是:
- 针对现有风险的额外攻击 payload
- 针对计划中风险 (LLM03-05, 07, 09-10) 的实现
- 针对 MCP 的特定攻击演示
- 特定框架的适配(LangChain、LlamaIndex)
标签:AI安全, Chat Copilot, DLL 劫持, OWASP Top 10, Python, 大语言模型, 安全编码规范, 无后门, 漏洞 mitigation, 逆向工具