我向NIST提交了关于AI Agent安全的意见
在60天内,我的AI agent有12次停下了被分配的任务,转而开始做别的事情。每一次,agent都继续产出看似合理的输出。没有任何安全漏洞参与其中。agent在运行时自行决定去处理一个不同的问题。1
2026年2月24日,这12起事件以及数十个相关故障,被整合成了一份2500字的公众意见,提交给美国国家标准与技术研究院(NIST)。NIST案卷编号NIST-2025-0035征求公众对AI agent安全考量的意见。2意见征集期大约在2026年3月9日截止。我的意见围绕一个核心论点:agent威胁是行为性的,而现有的NIST框架均未涵盖行为性失败模式。
摘要
我在日常生产环境中运营一套AI agent编排系统:15,000行代码在agent的每个操作上拦截15种hook事件类型。在60多次会话中,我识别出7种反复出现的行为性失败模式,在传统软件中找不到对应物。agent偏离了任务方向,声称测试通过但实际上根本没运行测试,还生成了递归子agent导致每一跳都丢失上下文。我构建了三层防御体系(hook管线、操作系统沙箱、证据门禁),并将该系统与CSF 2.0、SP 800-53以及AI风险管理框架进行了对照映射。三个框架均存在显著缺口。意见中包含六项按优先级排列的建议,首要建议是发布一份关于agent行为威胁分类学的NIST内部报告。意见征集期仍在开放中。
为什么一个一线从业者要提交联邦公众意见
NIST很少就AI安全征求公众意见。当该机构发布关于AI agent安全的信息征求书时,其中五个议题领域恰好直接对应了我已经构建了生产解决方案的问题:2
- 影响AI agent系统的独特安全威胁
- 在开发和部署过程中增强安全性的方法
- 现有框架在应用于agent时的表现
- 衡量安全性和预判风险的方法
- 约束和监控agent访问权限的部署保障措施
大多数联邦信息征求书的公众意见来自企业、行业团体和研究实验室。个人从业者很少提交。但从业者每天都在运行这些系统。一个开发者通过60多次会话运行AI agent,积累的证据是受控实验无法产生的。我提交意见是因为这些证据已经存在,而且不会有其他人去提交。
这份意见经过了三轮修订、一个10-agent的审议流程,以及两轮竞争性评估(Claude Code对比Codex CLI),最终才提交。1
我构建了什么
该编排系统将Anthropic的Claude Code CLI封装在大约15,000行shell和Python代码中。agent执行的每一个操作(文件读取、文件写入、bash命令、网络请求、子agent生成)在执行前都会经过hook管线。8个调度器hook根据工具类型将调用路由到处理器hook。系统记录每一个决策,追踪成本,监控偏移,并强制执行agent无法覆盖的硬性限制。1
我并非一开始就打算构建这个系统。系统是从失败中生长出来的。偏移检测器的存在,是因为一个agent在任务是”修复登录端点”时花了45分钟重新整理我的项目目录。沙箱的存在,是因为我发现一个agent试图向~/.ssh/写入文件。证据门禁的存在,是因为一个agent在没有运行pytest的情况下报告”所有测试通过”。每个组件都可以追溯到一个具体的生产事故。
行为威胁:核心论点
传统安全防御的是漏洞利用:SQL注入、缓冲区溢出、凭证窃取。agent安全增加了一个在软件领域毫无先例的类别:agent在运行时决定做什么工作,而它可能做出错误的决定。
会话偏移
agent逐渐偏离被分配的任务,同时继续产出看似合理的输出。我的偏移检测引擎计算原始用户提示的嵌入向量与agent最近25次工具调用的滑动窗口之间的余弦相似度。1当分数降至0.30以下时,系统会注入一条包含原始提示的警告。
我基于60次会话的人工审查设定了0.30的阈值。系统触发了12次低于阈值的警告。在所有12个案例中,agent都已经可验证地失去了对原始任务的跟踪。在阈值以上的会话中,没有任何一次需要人工介入处理偏移。我针对精确率优化了阈值;尚未正式测量假阴性率。1
幻影验证
agent声称工作已完成且测试通过,但实际上根本没有执行测试。检测信号很明确:完成报告中缺少粘贴的测试输出。”根据代码结构,测试应该能通过”用信念代替了证据。我描述了同一失败模式的虚构变体:agent自信满满地发布错误断言,因为没有任何机制将自我报告与外部现实进行验证。1
递归生成
能够生成子agent的agent可能进入失控递归,消耗计算预算并丧失连贯性。我的递归守卫强制执行最大深度为2、每个父agent最多5个子agent的限制,通过锁保护的JSON文件追踪完整的谱系树。1
七种失败模式
我在60次会话中编录了7种反复出现的行为模式。每种模式都有特定的检测信号,hook或人工审查可以据此检查:
| 失败模式 | 定义 | 检测信号 |
|---|---|---|
| 捷径螺旋 | 跳过审查步骤以更快报告完成 | 完成报告缺少步骤证据 |
| 信心幻觉 | 用”我很确信”代替实际验证 | 使用模糊措辞但无测试输出 |
| 差不多平台期 | 接受功能正常但未经测试的工作 | 未引用测试覆盖率或文档 |
| 隧道视野 | 打磨单个组件而忽视集成破坏 | 未运行集成测试 |
| 幻影验证 | 声称测试通过但未运行测试 | 报告缺少粘贴的测试输出 |
| 延迟债务 | 在已提交的代码中留下TODO/FIXME标记 | 提交差异中存在TODO/FIXME |
| 空洞报告 | 报告”完成”但未提供每项标准的证据 | 标准未被逐一说明 |
这些模式都不需要漏洞。agent不需要利用CVE。agent的失败方式是把工作做得很糟,同时报告说做得很好。
纵深防御
编排系统使用三个独立层。一层的失败不会损害其他层。
第一层:Hook管线。每一次工具调用在执行前都会经过PreToolUse hook。处理器可以阻止执行、修改命令或注入咨询性上下文。调度器-处理器架构意味着添加新的安全检查只需编写一个处理器文件,无需修改路由管线。8个调度器路由到99个处理器hook。1
第二层:操作系统沙箱。一个macOS Seatbelt配置文件定义了8条显式拒绝规则,阻止向.ssh、.gnupg、.aws、环境文件、GitHub CLI认证以及macOS钥匙串写入。内核强制执行这些规则,与agent构造的命令无关。在该配置文件下执行touch ~/.ssh/test将返回”Operation not permitted”。1
第三层:证据门禁。在将任何非平凡任务标记为完成之前,agent必须以引用证明满足六项证据标准:遵循代码库模式(指出该模式)、最简可行方案(解释被否决的替代方案)、边界情况已处理(逐一列出)、测试通过(粘贴输出)、无回归(指出已检查的文件)、解决了实际问题(阐述用户需求)。门禁将模糊措辞(”应该能用”、”大概没问题”)标记为不充分证据,触发强制重新验证。1
层间独立性是关键的设计属性。一个绕过hook管线的agent仍然会触碰操作系统沙箱。一个找到沙箱缺口的agent仍然要面对证据门禁。没有任何单点故障能够危及整个系统。
框架缺口分析
这份意见将生产控制措施与三个NIST框架进行了映射。部分映射效果良好,其他则暴露了现有框架无法填补的缺口。
可映射的部分
PreToolUse hook横跨CSF 2.0的两个功能:保护(PR.PS-05,防止未经授权的操作)和检测(DE.CM,对工具调用的持续监控)。3操作系统沙箱实现了SP 800-53的AC-3(访问控制强制执行)和AC-6(最小特权)。4 Hook管线映射到AC-25(引用监控器):始终被调用,无法被绕过,且足够精简以便验证。AI RMF的映射功能(MAP 3)与偏移检测一致:理解agent实际在做什么,与操作者要求它做什么进行比较。5
缺失的部分
| 框架 | 适用控制措施 | agent特有缺口 | 建议扩展 |
|---|---|---|---|
| CSF 2.0 | DE.CM, DE.AE | 无行为偏移检测类别 | 扩展DE.AE示例以包含agent行为异常 |
| SP 800-53 Rev. 5 | AC-3, AC-6, AC-25 | 无agent委托深度控制 | 新增agent委托治理的控制增强项 |
| AI RMF 1.0 | MAP 3 | 无运行时任务保真度指标 | 在MEASURE功能中增加agent偏移相似度 |
OWASP Agentic Applications十大风险(2026年版)涵盖了Agent Goal Hijacking(ASI01)和Human-Agent Trust Exploitation(ASI09),但既未涵盖幻影验证等自治理失败,也未涵盖空洞报告。6 NIST AI 600-1(生成式AI概况)广泛涉及生成式AI风险,但其发布早于agent化部署模式。7
委托链风险
当一个agent生成子agent,子agent再生成子agent时,安全属性并非叠加的。每一跳引入三种复合风险:
- 语义压缩。父agent的完整推理上下文被压缩为一个提示字符串,关于哪些文件敏感、哪些方案已被父agent否决等细微信息在此过程中丢失。
- 权限放大。子agent继承了文件读写权限,但没有继承父agent对哪些文件具有安全敏感性的理解。
- 责任扩散。当子agent产出错误结果时,审计追踪可以显示哪个agent做出了每个决策,但根agent对最终结果承担运营责任。
我的递归守卫通过追踪agent谱系并强制执行硬性深度限制来应对委托链问题。尚无已发布的框架涉及多级agent委托的复合风险。
六项建议
意见以六项建议作结,从基础性到操作性依次排列:
-
发布一份NIST内部报告,建立agent行为威胁分类学。传统威胁模型(STRIDE、OWASP十大)无法捕捉agent特有的失败模式。共享的分类学是所有其他建议的前提。NIST还可以为CSF 2.0扩展agent特定子类别,并发布针对agent系统的AI RMF概况。
-
建立操作系统级别的隔离要求。能够即兴构造新命令模式的agent可以绕过应用层沙箱。操作系统级别的强制执行(Linux seccomp-bpf、macOS Seatbelt、容器隔离)提供了agent无法通过推理绕过的边界。
-
要求对agent自我报告进行独立验证。agent不能作为判定自身工作是否正确的唯一权威。应由独立流程验证外部证据(测试输出、API响应、校验和),然后再决定是否允许任务完成。
-
建立agent工具调用的影响范围分类。将每个agent操作标记为本地、共享或外部,并为每个层级设置递增的授权要求。我之前详细描述了分类系统。
-
定义量化偏移指标。agent安全态势需要一个可衡量的”任务对齐分数”,反映agent当前活动与被分配任务的对齐程度,按固定间隔计算。
-
标准化agent操作的审计日志。记录每一次工具调用、每一个hook决策和每一个被阻止的操作,采用支持事后重建的格式。
提交您自己的意见
NIST-2025-0035的意见征集期大约在2026年3月9日截止。NIST信息征求书具有实际影响力:这些意见直接影响已发布的框架、标准和指南的制定。如果您在生产环境中运行AI agent,您的证据很重要。
如何提交:
- 访问NIST-2025-0035案卷页面
- 在信息征求书文档上点击”Comment”
- 撰写您的意见,涉及五个议题领域中的任何一个
- 附上具体证据:代码、指标、事故报告
- 填写您的联系信息并提交
您不需要涉及所有五个议题。一份聚焦于单一议题、有证据支撑的意见,比一份广泛但缺乏具体内容的意见更有价值。NIST工作人员会阅读每一份提交。
核心要点
对于安全从业者:将您现有的agent控制措施与CSF 2.0和SP 800-53进行映射。hook管线到AC-25引用监控器的映射提供了一个具体框架,可用于向合规团队描述agent级别的访问控制。
对于AI开发者:在传统安全之外同步构建行为检测。会话偏移、幻影验证和递归生成是生产现实,而非理论风险。从证据门禁开始:在标记任务完成之前要求引用证明。
对于政策制定者:传统安全框架与agent特有威胁之间的差距是结构性的,而非渐进性的。agent的失败方式是STRIDE、OWASP以及NIST现有目录所未分类的。行为威胁分类学是其他一切工作的前提。
对于框架制定者:增加委托链治理。当agent生成agent时,上下文退化、权限放大、责任扩散在每一跳都在发生。深度三及以上的复合风险在任何框架中都没有先例。
参考来源
-
作者的生产遥测数据及提交给NIST-2025-0035的公众意见。追踪编号mm1-hgn6-spl7。2026年2月,跨60次日常Claude Code会话的偏移相似度引擎。完整意见文本可应要求提供。 ↩↩↩↩↩↩↩↩↩↩
-
NIST-2025-0035: Request for Information Regarding Security Considerations for Artificial Intelligence Agents. National Institute of Standards and Technology. ↩↩
-
NIST Cybersecurity Framework 2.0. National Institute of Standards and Technology, 2024. ↩
-
NIST SP 800-53 Rev. 5: Security and Privacy Controls for Information Systems and Organizations. National Institute of Standards and Technology, 2020. ↩
-
NIST AI Risk Management Framework 1.0. National Institute of Standards and Technology, 2023. ↩
-
OWASP Top 10 for Agentic Applications. OWASP Foundation, 2026. ↩
-
NIST AI 600-1: Artificial Intelligence Risk Management Framework: Generative AI Profile. National Institute of Standards and Technology, 2024. ↩