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, 逆向工具