AI Agent 权限:在 4 万次游戏运行中,人类漏掉了三分之一的威胁

人机回环(Human-in-the-Loop)是无效的安全屏障

来自超过 40,000 次基于浏览器的模拟数据表明,人类在批准 AI agent 命令时,平均会漏掉 三分之一的安全威胁(准确率为 66.3%)。该研究表明,由于权限疲劳、缺乏上下文以及常见开发命令的欺骗性,依靠人工用户审批作为对抗流氓 AI agent 的最后防线在根本上是存在缺陷的。

关键性能指标

在 409,000 次独立决策中,模拟产生了以下核心统计数据:

  • 32.9% 的会话 以负分结束,这意味着批准威胁带来的惩罚超过了正确执行的操作。
  • 35.2% 的玩家 抓住了所有威胁,但只有 20.8% 的玩家在没有拦截超过 20% 安全命令的情况下做到了这一点。
  • 7% 的玩家 无论风险大小都会批准每一个提示,实际上处于“危险地跳过权限”模式。

威胁类别与漏报率

用户漏掉微妙的窃取尝试的可能性显著高于明显的破坏性行为。随着威胁变得不再直观,漏报率会随之上升:

类别 示例 漏报率
明显的破坏性 rm -rf /, chmod -R 777 / 11.7%
持久化变异 crontab injection, git config hijack 23.8%
窃取 / 代码执行 curl to unknown APIs, typosquatted packages 33.4%
范围违规 cat ~/.aws/credentials, cat ~/.kube/config 35.0%

npm run 盲点

熟悉的脚本名称是恶意负载的强大心理掩护。研究中漏报率最高的命令是 npm run analyze,其被批准的概率高达 64.7%

尽管游戏提供了显示脚本实际内容的历史日志(例如,一个向远程服务器窃取数据的 curl 命令),用户仍然以高概率批准这些命令。npm run analyzenpm run setupnpm run deploy 的汇总数据显示,其漏报率为 52.5%,而其他窃取类攻击的漏报率为 28.4%。这表明,面对熟悉的命令名称时,用户往往会忽略历史日志中提供的上下文。

权限疲劳与时间压力

准确率会随着会话的进行而下降。虽然用户通常在最初的几个命令中会经历一个“热身”改进期,但漏报率在会话结束时会再次攀升。这与 Anthropic 等 AI 实验室的观察结果一致,即用户看到的审批越多,对每个审批的注意力就越少。

警惕的代价:过度拦截

高度警惕往往会导致“过度拦截”,即拒绝无害但看起来具有潜在风险的命令,从而降低了 agent 的效用。经常被拦截的无害命令示例包括:

  • npm config set registry https://npm.internal (拦截率 59%)
  • rm -rf dist/ (拦截率 45%)
  • kill $(lsof -t -i:3000) (拦截率 43%)

社区观点与替代方案

Hacker News 上开发者的讨论表明,大家达成了一个共识,即“点击批准”是一种糟糕的安全模型,通常被视为厂商的法律责任盾牌,而非强大的安全功能。

建议的技术缓解措施

社区成员建议采用几种结构性保障措施来替代人工审批:

  • 严格沙箱化: 利用 Docker、Podman、gVisor 或 Firecracker 来隔离 agent。有人建议使用具有受限主目录访问权限的独立 OS 用户 (chmod 0700 $HOME)。
  • 基于资源的权限: 从批准 命令 转向批准对 特定文件或网络端点 的访问。
  • 自动化策略执行: 实现确定性规则和基于 LLM 的监控器(例如“Watcher”之类的工具)的层级结构,自动批准安全命令,同时仅标记高风险异常。
  • 凭据隔离: 将密钥移出 shell 配置文件(如 .zshrc),以防止简单的 cat 命令窃取 API 密钥。

对研究的批评

一些参与者认为,游戏的人为时间限制和缺乏现实世界的后果(没有实际的数据丢失)可能会使结果产生偏差。其他人指出,缺乏专业上下文——例如,不知道特定项目的 .zshrc 是否真的包含密钥——使得某些提示在客观上具有模糊性。

Sources

相关