返回安全研究YOFUNE_LABS / R02

研究笔记

AI Agent 的身份
到底是谁?

Agent 不是一个账号。它是一条会借用多把钥匙的行动链。

研究笔记

本文是 Yofune_Labs 的工程分析,用来拆开身份、工具、记忆和边界。它参考公开的 Agent 安全讨论框架,但不是对某一份标准文本的逐条释义,也不替代具体系统的评估结论。

一次工具调用的日志常常写成:助手访问了订单接口。这句话省略了所有关键主语。是哪个登录用户?哪个服务账号?哪一个 OAuth 应用?工具自己缓存的令牌?还是上一轮任务留给运行时的环境变量?

Agent 看起来像一个员工,实际上更像一条会临时借用多把钥匙的自动化流水线。

01身份被折叠之后,审计也会一起折叠

传统应用大致能回答:这个 HTTP 请求代表谁。Agent 把规划、检索、工具、记忆串起来后,代表关系会断。用户只说了“帮我看看订单”,真正打到生产接口的可能是一个拥有跨部门读权限的平台账号。

出了事,安全团队会发现:

  • 应用日志记的是 Agent
  • 网关日志记的是服务账号
  • 模型日志记的是会话 ID
  • 工具日志记的是 MCP 名称

四份记录对不上同一个人,就无法判断这是用户授意、Agent 自作主张,还是外部内容改写了目标。

02至少要拆开的四层

发起者:点了按钮或发了消息的人。

授权范围:这一次任务被允许碰哪些系统和数据。

执行身份:工具实际使用的凭证。

工具自己的身份:MCP 或插件是否还持有另一套密钥。

任何一层被共用,最小权限就只写在纸上。很多团队用一个“Agent 专用账号”打通所有工具,图的是好连。结果是每个任务都继承最大权限。

03评估时不要只问“有没有登录”

要问:这次调用能不能回溯到具体的人、具体的任务、具体的授权。回不了,就还没有身份,只有一个会行动的匿名进程。

OWASP 围绕 Agent 的讨论,把身份、权限和工具控制放在显眼位置,原因也在这里。模型可以匿名生成文字。Agent 一旦行动,必须能被指认。