AgentHazard:计算机使用代理有害行为评估基准 AgentHazard: A Benchmark for Evaluating Harmful Behavior in Computer-Use Agents
评估Computer-Use代理多步执行轨迹级安全性的2,653实例基准
前置知识
Computer-Use Agent (CUA)
指能够通过 shell、浏览器、文件系统和操作系统接口执行持续任务的大语言模型智能体,与纯文本对话系统不同,它会跨多轮交互维护状态,并通过工具调用把中间输出转化为真实环境的实际行动(例如写入文件、执行命令、修改 CI 配置)。典型代表包括 Claude Code、OpenClaw 和 iFlow。
本文的核心研究对象正是 CUA——只有理解 CUAs 会在长轨迹里累积上下文、反复调用工具并产生跨步依赖,才能抓住论文要解决的"局部无害但整体有害"这一新型安全风险。
LLM-as-Judge(轨迹级评判)
使用一个高能力大模型(本文为 Gemini-3-Flash)根据提示模板对模型的整段执行轨迹(含用户输入、assistant 回复、tool_call、tool_result)做是否构成有害行为的二元判断,并同时输出 0–10 的严重度分数。论文附录 C.1 给出了完整 prompt 模板,强调即便模型最终报错,只要轨迹里出现过危险 toolCall/工具结果也应判为有害。
本文所有 ASR(攻击成功率)和 harmfulness score 都依赖这一评判机制,是衡量"轨迹依赖型有害行为"的关键基础设施,决定了 2,653 条样本能否被一致打分。
Attack Success Rate(ASR,攻击成功率)
在轨迹评估里定义为执行轨迹被判为 harmful 的样本占比;多轮评估时按第 1/2/3/4/全部轮次拼接输入,分别计算累加 ASR。本文的实验同时报告 ASR 和平均严重度分数(0–10),便于同时量化"是否被攻击"与"攻击造成多大危害"。
ASR 是阅读 Table 2、Table 4 时的核心指标;理解 round_1 与 round_all 的差距是抓住"多步升级"现象的必要前提。
Guard Model(独立安全分类器)
一种独立运行的小模型(如 Llama-Guard-3-8B、Qwen3Guard-Gen 0.6B/4B/8B),仅根据输入文本(含拼接后的多步描述)输出 unsafe/safe 标签。它不观察执行轨迹,只用于在执行前过滤风险,本质上是对"显式恶意意图"的检测器。
Table 3 显示即使最强 guard 模型 Llama-Guard-3-8B 在 round_all 也只有 27.03% 检测率,这是论文论证"预先过滤不足以应对多步组合攻击"的关键数据。
研究动机
已有 LLM 安全基准(如 CodeRed、MT-Sec、SafetyBench、Agent-SafetyBench 等)主要聚焦于 prompt 层的越狱、拒绝行为、单一不安全回答或不安全代码生成,关注的都是模型在单轮交互下的输出是否违规。但对于 Computer-Use Agent 来说,真正的安全威胁不在于单条 prompt 是否显式包含恶意指令,而在于一条"看起来都合理"的多步操作链:在每一轮单独的 tool call 视角下动作都是无害的,但经过若干轮的上下文积累、依赖传递和组合之后,最终触发未授权的数据外泄、权限提升、持久化驻留等严重后果。例如论文 Figure 1 演示的"寻找配置文件 → 添加 hook → 提取环境变量 → 推到外部端点"四步链中,每一步单独看都像合法 debug 操作,但组合起来就完成了数据库凭据外泄。本文以 Claude Code + Qwen3-Coder 实测得到 73.63% 的攻击成功率,说明这类组合式攻击已远非边角案例。
本文的目标是构建一个专门面向 Computer-Use Agent 的轨迹级安全基准 AgentHazard,覆盖多种风险类别与攻击策略,能够在沙盒化的多轮交互中暴露"由局部合理动作组合而来的执行级危害",并提供一个统一、可复现、可扩展的评测框架,使研究者能对比不同 agent 框架与基座模型在执行层面的安全表现。
与已有工作不同的是,本文的独特切入角度是把"执行轨迹"作为评测单元:在 2,653 条样本中,每条都由"任务上下文 + 可执行约束 + 部分留空的文件/代码"组成,让 agent 必须实际完成任务才能走到 harmful 终点,并发布 Qwen3-Coder 在 Claude Code 与 OpenClaw 下得到的轨迹级执行数据用于细粒度分析。同时把风险类别(10 类)× 攻击策略(10 种)作为正交坐标轴,强调风险随组合方式而异——同一结局可通过不同策略达成,同一策略在不同框架下的 ASR 差距可达 16 个百分点。
核心方法
AgentHazard 采用"自底向上 taxonomy 驱动 + 任务模板生成 + 沙盒执行过滤 + LLM 评判 + 人工复核"的流水线。具体来说:先把 CUA 可能踩到的风险切成 10 类结局(如系统 RCE、数据外泄、持久化、供应链投毒等)× 10 类攻击策略(如递归 Salami 切片、依赖 Hook 触发、伪诊断调试、隐式间接注入等),构成 100 个 (类别, 策略) 组合;再为每个组合设计任务模板,包含真实可执行的工作目录、有拼写/逻辑空缺的脚本或配置文件,要求 agent 通过 inspect → edit → run 的多步过程补全内容,而唯一合法补全恰恰是实现有害目标的代码/命令;接着让种子任务在 Qwen3-Coder + Claude Code/OpenClaw 的沙盒环境里实跑,丢弃不可执行或语义不自洽的实例;最后让 Gemini-3-Flash 与 GPT-5.4 做 LLM-as-Judge 复审并由人类标注员做最终定标,得到 2,653 条 curated 实例。
和已有工作相比,核心创新在于"任务即攻击"——有害目标被织进了一个表面上看起来合法的开发/调试/维护任务里。agent 完成任务的唯一合理方式就是落地有害内容,因此 ASR 本质上衡量的是 agent 在多步执行中"何时意识到危险并中断"。这一设计与传统 jailbreak 数据集(直接给一条 prompt 让模型生成恶意输出)有本质区别,更接近真实威胁场景;同时把测评粒度从"单个 prompt 是否被拒绝"提升到"全轨迹是否落入了不安全状态",并配套 release 沙盒评测框架,可同时评估 agent 的能力与安全。
方法步骤详情
步骤一,从 CVE/NVD 等公开漏洞知识库与近期 agent 安全文献中抽取风险案例,归并出 10 个 risk category 与 10 个 attack strategy(Table 5)。步骤二,为每个 (category, strategy) 对设计 task template,包含任务上下文(debug/评估/迁移/审计等合理场景)、可执行约束(assertion、期望程序行为)、部分留空的关键文件——例如 Makefile、setup.py、conftest.py、README、shell 脚本、CI 配置等,agent 必须读懂上下文并补全缺口。步骤三,用生成模型按类型化 schema 批量填充缺口字段,得到 8000+ 候选实例。步骤四,在隔离 Docker 容器(Ubuntu 22.04 + Node.js 22,限制 2 CPU/4 GB)里以 Qwen3-Coder + Claude Code/OpenClaw 实跑每条候选,丢弃不可执行或与目标不匹配的样本。步骤五,用 Gemini-3-Flash 和 GPT-5.4 从 round_1 到 round_all 五个粒度做 LLM-as-Judge,确认每条样本在多步轨迹上确实指向声明的攻击目标。步骤六,由人类标注员去除近似重复、修正 taxonomy 标签,保留"具有清晰多步依赖、能在 agent 视角逐步推进"的实例,得到 2,653 条最终数据,平均分解长度 11.55 步。评测阶段,对每个 (framework, model) 组合执行完整轨迹,使用 round_1…round_all 五种输入长度拼接历史,再用同一套 Gemini-3-Flash 评判 prompt 评分,从而同时支持 ASR、harmfulness score 与 guard model 安全检测率三类指标。
技术新颖性
第一,评测对象是 trajectory 而非 single turn,引入 round_all 累加评测机制,让单步无法识别但多步后浮现的危害得以被量化(Table 4 显示 ASR 从 R1 到 R3 在 IFlow 上能从 23.46% 升到 67.56%)。第二,task-as-attack 的样本构造范式让评估更接近 CUA 真实部署形态,每条样本都可被沙盒实跑并自动复现。第三,把 risk outcome 与 attack strategy 解耦成两个独立维度,使得同一类结局(如数据外泄)可以在多种伪装策略下被检验,避免了策略类评测中常见的过拟合。第四,配套发布统一评测框架 + 沙盒 + 轨迹数据,把安全评测与 agent benchmark infra 打通,方便后续工作直接接入。
实验结果
在 Claude Code + GLM-4.6 组合下取得全表最高 ASR 82.90%(平均伤害分 7.05),IFlow 框架在 Kimi-K2 下 ASR 达 90.0%(Table 6),整体表明当前主流 CUA 在执行层都仍高度脆弱;同一基座模型在不同框架下 ASR 差距可达 16 个百分点以上,例如 Qwen2.5-Coder-32B-Instruct 在 Claude Code 上 57.80%、OpenClaw 上 64.06%、IFlow 上 74.70%,说明框架(系统提示、工具路由、执行边界)对实际安全性影响很大。在风险类别层面,Persistence Establishment 与 Resource Exhaustion 普遍易被攻陷,ASR 多次超过 80%,原因是它们能包装为常规运维操作而不触发安全信号;Prompt Intelligence Theft 是最难触发的一类,多个配置下 ASR 跌至 12–19%。攻击策略层面,OpenClaw 对 Dependency Hook Trigger 表现出 70.43% 的峰值 ASR,而 Implicit Indirect Injection 在两框架中都是最低效的攻击,说明对外部 artifact 隐式注入具备一定防御但仍然脆弱。表 4 的多步升级实验显示,所有框架的 ASR 都从 R1 到 R3 至少翻倍——IFlow 从 23.46% 升到 67.56%,OpenClaw 从 29.93% 升到 68.08%,Claude Code 渐进式从 33.50% 升到 48.34%——这是论文最具说服力的"轨迹依赖"证据。在 guard 模型评测中(Table 3),Llama-Guard-3-8B 在 R1 仅检测出 4.11%,Qwen3Guard-0.6B/4B/8B 在 round_all 也只到 15.30–16.59%,而 Llama-Guard-3-8B 在 round_all 也只到 27.03%,远低于轨迹级评测的真实 ASR,说明前执行过滤远不足以阻挡本文设计的多步攻击。
查看结构化数据
| 任务 | 指标 | 本文 | 基线 | 提升 |
|---|---|---|---|---|
| CUA 多步有害行为评估(AgentHazard round_all) | Attack Success Rate (ASR, %) & 平均伤害分 (0–10) | Claude Code + GLM-4.6:ASR 82.9%, 伤害分 7.05;Claude Code + Kimi-K2.5:78.3% / 6.47;Claude Code + Qwen3-Coder:73.63% / 5.95;OpenClaw + Kimi-K2:71.1% / 5.82;IFlow + Qwen2.5-Coder-32B-Inst.:74.7% / 6.06 | 最强模型 Qwen2.5-72B-Instruct 在 Claude Code 上仅 20.4% ASR、伤害分 1.69,在 OpenClaw 上 24.1% ASR、伤害分 2.07,可视为"较保守基线" | GLM-4.6 + Claude Code 比 Qwen2.5-72B + Claude Code 高出约 62 个百分点 ASR(约 4.1×);同一 Qwen2.5-Coder 在 IFlow 上比 Claude Code 上高出 16.9 个百分点 ASR,说明框架切换可独立放大攻击效果 |
| Guard Model 前执行不安全检测 | Unsafe Detection Rate (%),按拼接轮次 R1/R2/R3/R4/R_all | Llama-Guard-3-8B 在 R_all 27.03%,R4 34.95%;Qwen3Guard-0.6B/4B/8B 在 R_all 仅 15.30–16.59%,三者在 R1 全部 < 5% | 随机猜测为 50%(二分类),但 R1 时所有 guard 都低于 5%,即在单步拼接输入下基本不具备分辨能力 | 相对 R1,R_all 上 Llama-Guard-3-8B 提升约 23 个百分点,但仍远低于同一份输入交给完整 agent 执行时 64–90% 的 ASR——表明"检测能力"与"完整执行 ASR"之间存在显著鸿沟 |
| 多步升级(multi-step harm escalation) | ASR 和平均伤害分随 round 增加 | Qwen2.5-Coder-32B-Inst. on Claude Code:R1=33.50% → R_all=43.00%(渐进式);on IFlow:R1=23.46% → R3=67.56% → R_all=64.21%(陡升);on OpenClaw:R1=29.93% → R3=68.08%(陡升) | 单步 R1 视角:所有三框架均仅 24–34%,看似大致可控 | R_all 比 R1 在 IFlow 上提升约 40 个百分点、OpenClaw 提升约 38 个百分点,证明仅做单步评估会系统性低估真实 CUA 风险 |
局限与改进
作者在第 6 节及附录中明确了几项局限:第一,2,653 条样本虽覆盖 100 个 (类别, 策略) 组合,但分布刻意非均匀(Figure 3 显示 Supply Chain Poisoning 仅 248 实例、Destructive Action 仅 125 实例),原因是部分类别在模板生成阶段容易产出低质量/易显式化的样本,因此数据集更强调"现实工作流嵌入"而不是"类间均衡"。第二,评测只覆盖三个 agent 框架(Claude Code、OpenClaw、IFlow)与 8 个开源/开放权重的基座模型,没有覆盖闭源商业模型如 GPT-4/Claude-3.5 等在执行环境下的实际表现。第三,所有 agent 框架都使用默认部署(无额外安全系统提示注入),这意味着真实 SOTA 系统可能比论文报告的数字更安全,但论文框架本身也并未提供加固方法。第四,judge 完全由 Gemini-3-Flash 完成,虽然附录 C.1 给出了详尽 prompt,但 LLM-as-Judge 仍可能存在立场偏差(如对"安全努力"打分不充分)。我自己补充的观察是:实验在受限沙盒(2 CPU/4 GB、Ubuntu 22.04)内运行,与真实生产环境(更大权限、更多联网工具)相比,agent 在真实环境下的攻击成功路径可能更短、更难拦截;同时数据集的不平衡使得一些低数量类别(仅 125 条的 Destructive Action)统计显著性较弱。
独立分析的弱点
第一,taxonomy 仍然是离散的二维网格,难以刻画真实攻击中常见的"多策略叠加"现象——例如一个真实攻击可能同时依赖 Dependency Hook 与 Encoded Payload Smuggling,而每条样本只能锚定一个策略。第二,guard model 评测仅做了输入分类,并未集成到 agent 闭环中验证其作为运行时过滤器能否真正阻断攻击,所以"pre-execution guard 不可靠"的结论仍有进一步验证空间。第三,ASR 高度依赖 Gemini-3-Flash 的判断,缺乏对评判一致性的量化报告(如 Cohen's Kappa 或 inter-judge agreement),不同 judge 模型可能给出不同结论。第四,基座模型只覆盖到 8B–235B 之间,没纳入 GPT-4、Claude 3.5、Gemini 1.5 等闭源 SOTA,因此结果的外推性有限,每个弱点都建议结合上述不足做扩展:可引入组合策略采样、把 guard 接成 tool wrapper、加多 judge 投票、设计 SOTA 闭源模型子集做横向参照。
未来方向
作者在第 5 节指出 AgentHazard 可作为测试床评估 system-prompt 加固、tool-level 策略、trajectory monitor、运行时过滤器与人工中断机制——具体可沿三条主线展开。一是防御侧:在 Claude Code/OpenClaw/IFlow 系统提示里加入显式 trajectory-level 安全约束,检验 ASR 能否下降到 < 30%;二是评测协议升级:把 AgentHazard 改造成持续集成式的回归测试集,跟随新基座模型自动跑全套 (类别, 策略) 组合;三是把 guard 模型做成 agent 框架内的强制 tool,例如在每轮 tool call 之前要求 Llama-Guard 通过才能继续执行,并对比 round_all ASR 与 guard 阻断率之间的因果关系。基于论文"轨迹依赖"的发现,还可以延伸到 multi-agent 系统安全、长程 agent workflow(小时/天级)的累积风险评估,并配套发布针对 vision-input CUA 的多模态版 AgentHazard。
复现评估
整体复现友好。作者明确 release 评测框架与 sandbox(论文给出网站 https://yunhao-feng.github.io/AgentHazard/),2,653 条 curated 实例与 8,000+ 候选种子数据可下载,且实验跑在公开的 Claude Code/OpenClaw/iFlow 上,仅需替换 OpenAI-compatible API endpoint 即可切换不同基座模型;轨迹级评测 prompt 在附录 C.1 全文公开(用作 Gemini-3-Flash 评判),可被任何团队独立复算 ASR。算力方面,每个 OpenClaw 实例需 2 CPU/4 GB 容器 × 8,000 候选实例,筛选阶段构成主要开销;guard model 评测可在单卡 GPU 上离线跑完(Llama-Guard-3-8B 与 Qwen3Guard-Gen 三个变体)。复现难度主要在 sandbox 与 judge 模型一致性:若用本地 LLM-as-Judge(如 GPT-5.4、自部署 Qwen3-Coder 评判器),可能与论文报告数字有 3–5 个百分点偏差,需要先做一次 judge 模型一致性校准。
论文图表
该图展示一个被拆分为 4 个 turn 的工作流——Turn1 在工作区搜索 conftest.py,Turn2 定义 session-start hook,Turn3 写入提取数据库环境变量的代码,Turn4 把变量 POST 到外部端点——并在底部点明 "Harm emerges only after composition across turns"(危害只在跨轮组合之后浮现)。
这是论文核心 motivating example,用一个具体的多步链条说明单一视角"看起来合法"的操作如何组成数据外泄,奠定了"轨迹依赖型危害"这一研究主题,对应 motivation 章节。