AI 编程8 min read

保护 AI 编程 agent:面向团队的 OWASP 对齐安全检查清单

当编程助手进化为自主 agent,最大的风险便从写错代码转向执行危险操作。本文把 2025 版 OWASP LLM Top 10 映射到可落地的具体管控措施。

直接答案: 当编程助手变成能读取代码仓库、运行命令、调用工具的 agent 时,它最大的风险就从产出「错误代码」转向采取「危险操作」。OWASP Top 10 for LLM Applications(2025)把提示词注入、敏感信息泄露、供应链弱点、不当输出处理和过度自主列为最主要的风险。本清单把这些分类映射到可落地的具体管控——尤其面向运行自托管 agent 的团队。

一个代码补全工具建议了一行错误代码,那是效率问题。而一个编程 agent 读取了受攻击者影响的 issue,随后用你的凭据运行 shell 命令,那就是安全问题。二者的差别在于自主性叠加工具,而这彻底改变了威胁模型。

OWASP Top 10 for LLM Applications 的 2025 更新版,是针对这一威胁模型、被引用最广的起点。下文把它的各个分类,转译成它们在 AI 编程 agent 中的具体表现形式,以及应对它们的管控措施。

编程 agent 为何改变了威胁模型

一个现代编程 agent 通常会:

  • 摄入不可信内容——issue 文本、代码注释、网页、依赖的 README;
  • 持有工具与权限——shell、Git 访问、网络出站、软件包安装;
  • 带着一定的自主性运行——它可以串联多个操作,而无需人工逐步批准。

这种组合意味着,藏在 agent 所读内容里的一条恶意指令,可能变成一次恶意「操作」。仅仅守住模型输出还不够;你必须约束 agent 能「做」什么。

把 2025 版 OWASP LLM Top 10 应用到编程 agent

OWASP 分类(2025) 它在编程 agent 中如何出现 主要管控
Prompt Injection (LLM01) issue、评论或依赖中隐藏的指令让 agent 改变行为 约束工具;高影响操作需人工批准
Sensitive Information Disclosure (LLM02) 源代码、密钥或提示词被发送给模型提供商或写入日志 出站管控、密钥脱敏、最小范围凭据
Supply Chain (LLM03) 被投毒的模型、软件包或插件进入工作流 固定并校验来源;使用内部镜像
Improper Output Handling (LLM05) 生成的代码或命令未经检查便被执行 沙箱执行与强制评审关卡
Excessive Agency (LLM06) agent 拥有的权限或自主性超过任务所需 最小权限与明确限定的任务范围
System Prompt Leakage (LLM07) 嵌入提示词中的配置或密钥被暴露 让密钥远离提示词;假定提示词会泄露

OWASP 会定期修订该列表及其编号。在据此构建管控矩阵之前,请先在 OWASP Gen AI Security Project 上确认当前的条目与定义。

一份面向团队的管控检查清单

无论用哪种工具,在授予 agent 访问真实代码仓库之前,请先逐条落实以下事项:

  1. 信任边界。 画出不可信输入从何处进入、agent 又能在何处采取行动。假定 agent 读取的任何内容都可能包含指令。
  2. 最小权限。 只给 agent 完成任务所需的最窄凭据、代码仓库和网络范围——不留任何常备权限。
  3. 出站管控。 掌握并限制每一条出站路径:模型端点、Git 主机、软件包注册表、遥测、日志。
  4. 密钥卫生。 让凭据远离提示词和生成的产物;轮换任何 agent 可能观测到的密钥。
  5. 沙箱与隔离。 在一次性、资源受限、默认无法触达生产环境的环境中执行。
  6. 人工评审关卡。 高影响操作——合并、部署、基础设施变更、新增依赖——之前必须经过评审。
  7. 日志与审计。 记录任务、工具调用和结果,以便对意外操作展开调查。
  8. 供应链校验。 固定模型与软件包来源;校验完整性;对气隙或受监管的工作优先使用内部镜像。
  9. 模型与数据条款。 确认提供商保留什么、用什么训练,以及数据在何处处理。
  10. 事件演练。 先用非敏感代码测试,并演练撤销访问权限、回滚 agent 操作。

自托管在哪些方面有帮助——又在哪些方面没有

自托管一个 agent 平台,能让组织真正掌控出站、隔离、日志和数据驻留。这些恰恰是多个 OWASP 分类所依赖的杠杆,也正因如此,自托管部署对受监管和涉及专有资产的工作颇具吸引力。

但自托管本身并不能消除提示词注入或过度自主。这些风险存在于 agent 如何处理内容、以及它能调用哪些工具之中,而不在于服务器部署在哪里。一个拥有宽泛凭据、又没有评审关卡的自托管 agent,依然是危险的。

MonkeyCode 的公开材料介绍了私有与离线部署,以及围绕任务和评审的托管式工作流。请把它视为支撑这些管控的有用基础设施,而非替代品。接下来有两个相关的直接答案值得一读:自托管是否就自动等于私密,以及 MonkeyCode 是否会把代码发送到外部,同时还可以了解本站的安全与数据流边界

结论

从助手到 agent 的转变,是从「代码正确吗?」到「这个系统能做什么、又是谁批准的?」的转变。用 2025 版 OWASP LLM Top 10 来枚举风险,用最小权限和评审关卡来约束操作,并在信任某条边界之前先用非敏感代码验证每一项管控。自托管能强化其中若干项管控,但它并不能取代它们。

来源边界: 本文引用的风险分类来自 OWASP Top 10 for LLM Applications(2025 版),核验于 2026 年 7 月 20 日。OWASP 会随时间修订该列表;请直接确认当前的条目与编号。本文为通用安全指南,并非对任何特定产品或部署的认证。