安全实战:OWASP 与防护

一句话定义:09 模块讲了"三层护栏"框架,本篇给"威胁清单 + 具体防护工具"——让安全从原则落地为可部署的组件。

1. OWASP LLM Top 10(2025)速查

编号 威胁 Agent 中的体现
LLM01 Prompt Injection 工具返回/网页含恶意指令劫持 Agent
LLM02 敏感信息泄露 记忆/上下文泄露密钥、PII
LLM03 供应链 不可信 MCP Server / 第三方包执行任意代码
LLM04 数据投毒 训练/检索语料被注入偏见或后门
LLM05 不当输出处理 模型输出被当指令执行(SSRF/命令注入)
LLM06 过度授权 Agent 持超出所需的权限
LLM07 系统提示泄露 系统提示被套出,暴露内部逻辑
LLM08 向量库漏洞 检索层越权/注入(见 04 模块)
LLM09 错误识判/过度依赖 盲信模型输出("看似完成")
LLM10 不健康竞争/模型择乱 多 Agent 互相放大错误

与 09 模块"三层护栏"对应:LLM01/05/07 靠数据层+循环层;LLM03/06 靠工具层最小权限;LLM02/08 靠数据层


2. Prompt Injection 实战防御

  • 分区(Delimiting):系统指令 vs 不可信内容用标签隔离(见 13.03 分隔符)。
  • 特权分离:注入的内容只作"数据"处理,绝不作为"指令"执行。
  • 输出净化:Agent 产出的内容若将被二次执行(如生成 SQL/命令),必须校验(LLM05)。
  • 最小权限:Agent 不持超出任务的权限(LLM06,09 模块已强调)。
  • 信任边界:工具返回、网页抓取、用户上传都默认不可信。

3. 供应链安全(MCP / 依赖)

  • 只用可信 MCP Server(03 模块已强调):Server 能执行任意代码/访问数据。
  • 自托管优先,远程 Server 必鉴权 + TLS(03 模块)。
  • env 里的密钥不入公开仓库(03 模块安全注意)。
  • 依赖锁定 + 审计(npm audit / pip-audit)。

4. 防护工具(Guardrails)

工具 作用
NeMo Guardrails 对话级护栏:话题限制、越狱拦截、安全输出
Guardrails AI 结构化输出校验 + 内容安全检查(PII、毒性)
LlamaGuard / ShieldGemma 安全分类器(暴力/色情/越狱)
Lakera / HiddenLayer 商用 Prompt Injection 检测
Presidio PII 识别与脱敏
自建正则/分类器 针对业务的敏感词/模式过滤

部署位置:

  • 输入侧:用户/工具返回进 LLM 前过滤(防注入、防 PII 入上下文)。
  • 输出侧:LLM 输出给用户/执行前校验(防泄露、防危险动作)。

5. 红队测试(Red Teaming)

  • PromptFoo 红队 / 自建对抗样本,主动探测越狱、泄露、注入。
  • 把成功攻击案例转成防护规则 + 评测集(见 13.08)。
  • 关联:09 模块"设计原则:默认拒绝、可审计、失败安全"。

6. 审计与合规

  • 记录所有工具调用、数据访问、人工审批(09 模块审计日志)。
  • 关联 13.04 可观测性:安全事件实时告警。
  • 合规:PII 处理符合 GDPR/个保法;跨境数据注意数据驻留(见 13.10 合规)。

7. 反模式

  • ❌ 把工具返回当可信指令(典型注入入口)。
  • ❌ 用不可信 MCP Server 且给高权限。
  • ❌ 只防输入不防输出(LLM05 不当输出处理)。
  • ❌ 无红队、无审计,出事无据可查。

8. 学习要点

  • OWASP LLM Top 10 是威胁清单,对应到 09 模块的三层护栏。
  • 防护要"输入侧 + 输出侧"双保险,并落到具体工具(Guardrails AI/LlamaGuard/Presidio)。
  • 供应链(MCP/依赖)是不可忽视的攻击面。
  • 红队 + 审计是安全闭环的两端。

9. 参考资料

  • OWASP LLM Top 10 (2025)
  • NeMo Guardrails / Guardrails AI / LlamaGuard 文档
  • "Not with a Bug, but with a Sticker"
  • 09-安全与护栏03-工具调用13-进阶与工程化/03-高级提示工程