桃子桃子快讯
返回首页
研究论文

AI Agent 框架审计:30 处缺失权限校验的破坏性操作

研究者扫描 25 个主流 AI Agent 框架,发现 30 处模型可触达但缺少权限校验的高危操作,涉及 crewAI、…

2026.07.26 · 周日4 分钟阅读

一项于 2026 年 7 月发布的安全研究,对 25 个 AI Agent 框架、共 23,476 个源代码文件进行了系统性静态扫描,寻找一类特定风险:模型可控制的参数直达破坏性操作(consequential sink),且在该路径上没有任何授权检查。最终人工复核后保留了 30 个有效发现,覆盖网络外发、文件删除、Shell 执行、SQL 执行、消息发送等高危动作类型。研究同时披露,其扫描器首轮精度仅为 81%(60 个候选中有 12 个误报),通过三轮修正后实现了 30/30 的精确率,并以回归测试持续强制保证。

主要受影响项目

扫描结果按仓库分类,被发现最多的项目集中在几款主流 Agent 框架:

  • crewAIInc/crewAI:12 处
  • TransformerOptimus/SuperAGI:6 处
  • FoundationAgents/MetaGPT:5 处
  • microsoft/semantic-kernel:3 处
  • agno-agi/agno:2 处
  • modelcontextprotocol/servers:1 处
  • modelcontextprotocol/python-sdk:1 处

作为对照,研究者还特意加入了 requests、flask、fastapi、click、rich 五个非 Agent 仓库作为控制组,结果为 0 个发现——任何命中都意味着扫描器精度失效,实际并未发生。

风险动作的形态分布

在 30 个有效发现中,行为类型呈以下分布:

  • 网络外发且目标地址由模型控制:15 起
  • 写入由模型控制的路径:7 起
  • Shell 执行:3 起
  • 向模型控制的接收方发送消息:2 起
  • 文件删除:2 起
  • 执行由模型控制的 SQL 语句:1 起

研究强调,一个发现并不等于一个漏洞:扫描器只能证明「在分析路径上,模型控制的参数到达了高危操作,且没有主导性的权限校验」,并不能证明该 Agent 在外部可达,也不能证明系统中不存在其他守卫。

方法论与边界

研究者区分了「校验(validation)」与「授权(authorisation)」:大多数 Agent 工具仅校验请求格式是否合法,而极少在副作用发生之前确认调用方是否有权执行该具体动作。这一区别在代码审查中几乎不可见,但决定了同一个 refund 接口是「拒绝未授权请求」还是「正常放行」。

扫描覆盖范围明确:

  • MCP @mcp.tool():已覆盖
  • LangChain @tool / BaseTool:已覆盖
  • OpenAI @function_tool:部分覆盖
  • 自定义 Agent 循环、动作/观察派发器:未覆盖

自定义 Agent 循环曾被尝试,但 10 个候选样本全部为误报——信号退化为「这个模块调用了 LLM」与「这个函数执行了传入内容」,而这几乎描述了任何 Agent 框架的核心结构。研究者选择将此记录为负面结果而非发布。

此外,当权限信息被绑定在签名证明对象内、由调用点之外的位置承载时,静态扫描无法验证授权与具体动作之间的真实绑定,这是研究主动声明的盲区,也是其呼吁引入运行时校验的依据。

配套工具

研究同时开源了一款同名扫描工具 actenon-scan,零运行时依赖、无需注册、无网络调用,可通过 pipx run actenon-scan scan . 在本地十秒内完成扫描。若未发现任何命中,工具会明确说明这一结果的含义与不含义,以避免「零发现」被误读为零风险。

信源