直接答案: 当编程助手变成能读取代码仓库、运行命令、调用工具的 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 访问真实代码仓库之前,请先逐条落实以下事项:
- 信任边界。 画出不可信输入从何处进入、agent 又能在何处采取行动。假定 agent 读取的任何内容都可能包含指令。
- 最小权限。 只给 agent 完成任务所需的最窄凭据、代码仓库和网络范围——不留任何常备权限。
- 出站管控。 掌握并限制每一条出站路径:模型端点、Git 主机、软件包注册表、遥测、日志。
- 密钥卫生。 让凭据远离提示词和生成的产物;轮换任何 agent 可能观测到的密钥。
- 沙箱与隔离。 在一次性、资源受限、默认无法触达生产环境的环境中执行。
- 人工评审关卡。 高影响操作——合并、部署、基础设施变更、新增依赖——之前必须经过评审。
- 日志与审计。 记录任务、工具调用和结果,以便对意外操作展开调查。
- 供应链校验。 固定模型与软件包来源;校验完整性;对气隙或受监管的工作优先使用内部镜像。
- 模型与数据条款。 确认提供商保留什么、用什么训练,以及数据在何处处理。
- 事件演练。 先用非敏感代码测试,并演练撤销访问权限、回滚 agent 操作。
自托管在哪些方面有帮助——又在哪些方面没有
自托管一个 agent 平台,能让组织真正掌控出站、隔离、日志和数据驻留。这些恰恰是多个 OWASP 分类所依赖的杠杆,也正因如此,自托管部署对受监管和涉及专有资产的工作颇具吸引力。
但自托管本身并不能消除提示词注入或过度自主。这些风险存在于 agent 如何处理内容、以及它能调用哪些工具之中,而不在于服务器部署在哪里。一个拥有宽泛凭据、又没有评审关卡的自托管 agent,依然是危险的。
MonkeyCode 的公开材料介绍了私有与离线部署,以及围绕任务和评审的托管式工作流。请把它视为支撑这些管控的有用基础设施,而非替代品。接下来有两个相关的直接答案值得一读:自托管是否就自动等于私密,以及 MonkeyCode 是否会把代码发送到外部,同时还可以了解本站的安全与数据流边界。
结论
从助手到 agent 的转变,是从「代码正确吗?」到「这个系统能做什么、又是谁批准的?」的转变。用 2025 版 OWASP LLM Top 10 来枚举风险,用最小权限和评审关卡来约束操作,并在信任某条边界之前先用非敏感代码验证每一项管控。自托管能强化其中若干项管控,但它并不能取代它们。
来源边界: 本文引用的风险分类来自 OWASP Top 10 for LLM Applications(2025 版),核验于 2026 年 7 月 20 日。OWASP 会随时间修订该列表;请直接确认当前的条目与编号。本文为通用安全指南,并非对任何特定产品或部署的认证。