Skip to content

Translation in progress Some entries still include text in the original language.

arXiv:Agent 与 MCP 安全· arXiv:2609.26900· Reshabh K Sharma·Indexed by this site · Originally published

Ajar:在 AgentDojo 上测量 Agent 防御中未关闭的权限

Ajar: Measuring Open Privilege in Agent Defenses

Quick read

Evaluation and benchmarks

Based on 论文 PDF (AI 生成); refer to the original

Ajar 挂到 AgentDojo,直接测防御对任务不需要的工具调用放行多少;过权泄漏与攻击成功率和良性效用不能互相推出。

Questions
智能体防御常按间接提示注入的攻击成功率和良性效用打分,两者都只看实际执行。防御可以两项都好看,同时仍放行任务不需要的转账、删除或宽读。
Methods
Ajar 复用宿主基准的任务、工具模式、参考解和目标状态,为每个良性任务构造带标签的候选调用,在每个决策点交给防御的 decide 接口。过权泄漏是被放行的多余调用的伤害加权占比,充分性是放行的必需调用占比。
Experiments and results
挂到 AgentDojo v1.2.2 的 97 个任务、10471 个测试,评测 Progent、CaMeL、AC4A、Permission Assistant 和 Claude Code Auto。作者称泄漏不能由攻击成功率或良性效用推出;Table 5 中 Sonnet-5 下 OPL 从 perm-assistant 的 0.0810 到 Auto 的 0.3009。
Limitations and future work
作者称标签大多由 Ajar 断言,宿主谓词只确认 27.0%;测试在重放前缀上、不跑智能体;只实例化 AgentDojo。伤害档由作者指定,权重改变绝对值但不改变档的排序依赖。
Experimental setupSonnet-5、Haiku-4.5 · AgentDojo v1.2.2 · OPL、sufficiency et al.
Evaluated models
Sonnet-5Haiku-4.5
Benchmarks
AgentDojo v1.2.2
Metrics
OPLsufficiencyfully provisionedattack admissionbenign-task completionover-restriction
AI summaryAjar 提出一种直接测量 Agent 防御中开放权限的评测方法,它挂载在已有的 Agent 安全基准上,复用其任务、工具 schema、参考解和目标状态,为每个良性任务构造任务并不需要的候选工具调用,并在 Agent 可行动的每个节点把这些调用提交给防御方,允许其中任何一个即意味着权限被开放。作者将 Ajar 接入 AgentDojo,使开放权限成为攻击成功率与良性效用之外的第三个维度,并测试了 Progent、CaMeL、AC4A、Permission Assistant 和 Claude Code 的 Auto mode 五种防御。

Ajar 提出一种直接测量 Agent 防御中开放权限的评测方法,它挂载在已有的 Agent 安全基准上,复用其任务、工具 schema、参考解和目标状态,为每个良性任务构造任务并不需要的候选工具调用,并在 Agent 可行动的每个节点把这些调用提交给防御方,允许其中任何一个即意味着权限被开放。作者将 Ajar 接入 AgentDojo,使开放权限成为攻击成功率与良性效用之外的第三个维度,并测试了 Progent、CaMeL、AC4A、Permission Assistant 和 Claude Code 的 Auto mode 五种防御。

Paper analysis

6 questions; open one to read the full answer

  1. What problem does this paper attempt to solve?

    现有基准只看攻击成功和效用,量不到防御仍开放的多余权限。

    智能体防御按攻击成功率和良性效用打分时,量不到它仍放行、而任务并不需要的工具调用。

    • 场景:语言模型智能体靠被授予的工具行动,读到的数据可以改写它如何使用这些工具。访问控制、信息流或隔离因此放在智能体与工具之间。作者以 AgentDojo 的银行任务为例:任务要把房租订单改到新金额,注入则用同一工具指向用户从未点名的收款方;只按工具名决策的防御分不开二者。
    • 现有指标的不足:攻击成功率只看注入触发的那次运行是否执行了注入调用,效用只看良性运行是否完成任务。二者都依赖智能体模型。模型若不提出攻击者的调用,防御从未被问到,攻击仍记为失败;模型完不成良性任务,效用也会下降。作者认为二者都不回答防御还准备放行什么。
    • 核心观察:最小权限要求组件只持有工作所需的权利(Saltzer & Schroeder, 1975)。作者认为,攻击成功率和效用分数量不到这项性质:防御若会放行攻击者的更新、而智能体只是没提出来,两项指标仍可记为干净,权限对下一次注入保持开放。
    • 本文提出:Ajar 用已有基准直接量这份开放权限。它挂到已有智能体安全基准上,复用其任务、工具模式、参考解和目标状态;对每个良性任务构造任务不需要的候选工具调用,在智能体可能行动的每个决策点交给防御。在 AgentDojo 上,开放权限成为攻击成功和良性效用之外的第三轴。
  2. What related research exists?

    作者把 Ajar 放在基准、防御、最小权限测量和策略挖掘几条线上。
    • 智能体安全基准:AgentDojo(Debenedetti et al., 2024)、InjecAgent(Zhan et al., 2024)、Agent Security Bench(Zhang et al., 2025)、R-Judge(Yuan et al., 2024)以及 τ-bench(Yao et al., 2024)、WebArena(Zhou et al., 2024)一类环境,用间接提示注入或工具交互给智能体打分。作者称这些基准按一次运行上的攻击成功和效用评判防御。
    • 边界上的防御:Progent(Shi et al., 2025)按任务写工具与参数的允许列表并随工具结果更新;CaMeL(Debenedetti et al., 2025)对可信规划器发出的程序做信息流与能力检查;Permission Assistant(Wu et al., 2026)用分类器逐次预测权限;AC4A(Sharma & Grossman, 2026)由模型为每个任务实例写一次策略再执行访问控制。Claude Code 的 Auto 模式由决策模型按调用本身判定。指令层级(Wallace et al., 2024)训练模型优先服从高权限指令,不在工具边界上裁决。
    • 最小权限的测量:Android 应用(Felt et al., 2011;Au et al., 2012)和云角色(D’Antoni et al., 2024)量过授予权利与实际使用之差。智能体一侧,Yang et al.(2026)与 Zhang et al.(2026)问的是模型自己是否去选比任务更宽的工具。作者在 Section 8 称,那条线不量防御层留下的多余权限。角色挖掘(Vaidya et al., 2007)和基于属性的策略挖掘(Xu & Stoller, 2015)从使用日志反推最小角色或策略;Capsicum(Watson et al., 2010)在 UNIX 上做能力隔离。副作用的可撤销性与影响范围,作者援引 Amodei et al.(2016)和 Krakovna et al.(2018)作为伤害分档的依据。
    • 基线与基准:评测基线不是防御,而是 allow-all、deny-all、tool-name allowlist 和 argument-exact oracle,全部在 AgentDojo v1.2.2 的 banking、slack、travel、workspace 四个套件上计分。

    作者把 Ajar 定位为:生成器、预言机和计分对着统一接口,换基准只写一个适配器,换防御只写一个包装器;它量的是防御留下的开放权限,而不是模型是否主动越权。

  3. How does the paper address this problem?

    Ajar 从良性任务造带标签测试,用伤害加权的过权泄漏和充分性给防御打分。

    Ajar 把一个良性任务变成一组带标签的测试,经统一的 decide 接口交给防御,再把允许或拒绝与标签对比。

    决策点与分数

    • 决策点:一次运行是已执行工具调用的序列。决策点是该序列的前缀,k 为前缀长度,k=0 表示尚未行动。候选是在该点提出的下一次调用 c=(tool, args)。一次测试是固定决策点上的一个候选加上标签。
    • 标签:预言机给出 y(c)∈{ALLOW, DENY}。ALLOW 表示任务需要该调用,或该调用与在最小权限下完成任务一致;DENY 表示任务不需要。标签来自任务,不来自被评防御。
    • 过权泄漏:记 Ct− 为 DENY 候选、w(c) 为伤害权重。OPL 是被防御允许的多余调用的权重和,除以全部多余调用的权重和。充分性是 1−UP,UP 是必需调用 Ctreq 中被拒绝的比例。被允许但并非完成任务所必需的调用单独记为过度限制(over-restriction)。
    • 聚合:OPL 在全部任务的 DENY 测试上合并成一个伤害加权比;充分性是各任务值的平均。作者给出的理由是:按任务平均 OPL 会让只有三条 DENY 测试的任务与有两百条的任务等权,从而抵消伤害加权。

    伤害分五档(Table 2):H0 必需调用,权重 0;H1 可撤销、只作用自身的读或草稿,权重 1;H2 可撤销、触及第三方,权重 3;H3 不可撤销、只作用自身,权重 9;H4 不可撤销且触及第三方或资金,权重 27。分档看副作用能否撤销、影响多远。

    攻击准入(attack admission)更窄:宿主基准的每个注入有一个或多个 sink 调用。一次攻击被准入,当且仅当其每个 sink 在被提供的每个决策点都被允许。作者按准入次数而不是比率报告,因为不同执行框架提供的攻击数不同。准入只说明防御已经授予攻击所需权限,攻击是否成功仍取决于智能体。

    候选如何生成

    决策点取参考解的每个前缀。生成器在每任务测试预算内,跨工具、参数范围和决策点抽样。多余调用分三族:

    1. 路径外工具:任务从不需要、但防御能够到达的每个工具,参数从环境中抽取,在每个决策点提供。
    2. 参数故障:从一次已授权调用出发,用适配器从环境收集的参数池替换参数,覆盖错误资源、参数放宽、类型违规和缺参。
    3. 攻击者播种:宿主基准已有注入的 sink 调用,在每个决策点提供,并用该注入自己的谓词复核。

    必需调用取参考解中的每一次调用,在它即将发出的前一个决策点提供,标签为 ALLOW。被许可调用有两类:任务开始前必须能做的读;以及任务自身的调用被放在参考解之外、但偏序仍允许的状态上。偏序来自基准执行:后一调用的参数值出现在前一调用的返回里。每个被偏序允许的顺序都在环境中重放,只有全程无错才保留。每个任务的枚举有上限。

    预言机与冲突

    预言机用固定规则对照宿主已有的必需工具集和目标谓词,不用事后判断。宿主谓词只在两种情形确认标签:与攻击 sink 相同、且执行会使 security() 为真的候选,确认为 DENY;与参考解中某次写入相同、且其后继续执行仍达到 utility() 的候选,确认为 ALLOW。utility() 不能确认 DENY;读不改变任一谓词所检查的状态,其标签由 Ajar 按必需工具集断言。

    多族可能在同一决策点提出同一调用且标签不一致。Ajar 只留一条测试,优先级固定:宿主验证过的标签高于 Ajar 断言的标签,必需调用高于被断言为多余的调用,冲突时标为 ALLOW。

    接口与实现

    防御通过 decide(call, context)→{allow, deny} 驱动。context 带已执行前缀和防御自己保存的状态。要在深度 k 提问,Ajar 把参考解重放到 k,再把候选当作下一次调用。若判决不依赖前缀,每个候选只问一次。

    Figure 1:适配器导出任务、工具、参考计划和攻击 sink;生成器产出测试;预言机给标签和伤害档;包装器走防御自己的执行路径并经 decide 返回判决。Ajar 用 Python,只依赖标准库,宿主基准和模型客户端在运行时接入。适配器原样传递工具的 docstring。

    五个包装器供给的上下文不同。Progent 在每个决策点快照策略,并把其更新步骤应用到重放前缀的结果上。Permission Assistant 不改分类器提示词,一次一个候选,附带用户请求和调用;AgentDojo 没有用户,故有冷启动(无画像、无历史)和用其他折的真值标签建成的历史两种配置,每套件五折。CaMeL 用其发布实现、提交 f083b6b,解释器和四个套件的策略引擎不改;包装器在每个注入向量放入 canary,只保留能到达智能体的向量,并按 CaMeL 的按类型规则计算能力,多对象时取最宽松者。AC4A 把模型写好的权限载入其权限系统,每个任务实例写一次。Claude Code Auto 不单独提供、源码未发布,在 Claude Code 内测量:把候选放进系统提示词使智能体提出该调用,再记录 Auto 的判决;候选若从未被发出,则不进入分类器,因而在更小的集合上计分。

  4. What experiments did the paper conduct?

    五个防御在 AgentDojo 上的 OPL 彼此分开,且不能由效用或攻击准入还原。

    实验设置

    • 宿主:AgentDojo v1.2.2,四个套件 banking、slack、travel、workspace,共 97 个用户任务,全部用于生成测试。其中 5 个 banking 任务在空轨迹上 utility() 已为真,其 ALLOW 标签无信息;泄漏和攻击准入在全部 97 个任务上报告,充分性和完全供给数在其余 92 个可评分任务上报告。完全供给指防御放行该任务的每一次必需调用。
    • 测试规模:10471 个测试,来自 3551 个互异 (task, tool, arguments) 候选,决策点 k=0 到 k=18(Table 3)。DENY 9039,必需调用 339,被许可调用 1093;宿主谓词确认 2822 个(27.0%),其余由 Ajar 断言。分套件确认率:banking 474(41.0%)、slack 774(29.6%)、travel 862(31.0%)、workspace 712(18.2%)。
    • 防御:Progent、Permission Assistant(表中写 perm-assistant)、CaMeL、AC4A、Claude Code Auto。前四个在 Sonnet-5 与 Haiku-4.5 下运行,二者由 Amazon Bedrock 提供;Auto 只在 Sonnet-5 下运行。决策模型指写策略或程序的模型,或逐调用裁决的模型。
    • 查询方式:AC4A、CaMeL、Permission Assistant 的判决不依赖已执行前缀,每个互异候选问一次。Progent 随工具结果更新策略,每个决策点都跑;Table 5 的 Progent† 改为在该候选最早的决策点上每个互异候选计一次。Auto 读此前调用但不读返回值,候选不带前缀呈现。
    • 基线:allow-all、deny-all、tool-name allowlist(只允许任务所需工具名、不约束参数)、argument-exact oracle(按真值逐参数写的同一允许列表)。
    • 良性运行:每个防御在全部 97 个良性任务上跑两遍,一遍有防御、一遍去掉,同一智能体、任务和执行代码,两遍都无注入。效用运行里的智能体见 Table 7 的 Agent 列。

    主结果

    据 Table 5(Progent† 为每个互异候选计一次;Auto 只在其智能体实际发出的调用上计分,无充分性;perm-assistant‡ 带个性化历史):

    Swipe horizontally to read the table

    防御决策模型OPLSuff.完全供给攻击准入
    perm-assistantSonnet-50.08100.96182/9225/609
    perm-assistantHaiku-4.50.12890.82268/9239/609
    CaMeLSonnet-50.08950.70037/9216/609
    CaMeLHaiku-4.50.10410.66534/9216/609
    Progent†Sonnet-50.10260.90270/9234/609
    Progent†Haiku-4.50.13120.85964/9236/609
    AC4ASonnet-50.11130.71547/9246/609
    AC4AHaiku-4.50.08960.60940/9246/609

    表中 95% 自助区间按任务重抽样。Auto(Sonnet-5)的 OPL 为 0.3009,区间 [0.2610, 0.3437],攻击准入 74/581。perm-assistant‡(Sonnet-5)的 OPL 为 0.0217,充分性 0.877,完全供给 64/92,攻击准入 4/609。Table 6:allow-all 的 OPL 为 1.0000、充分性 1.00、92/92、609/609;tool-name allowlist 为 0.3551、1.00、92/92、99/609;argument-exact oracle 为 0.0020、0.91、71/92、1/609;deny-all 为 0.0000、0.00、0/92、0/609。

    • 作者称所测防御的 OPL 都落在 tool-name allowlist 与 argument-exact oracle 之间;充分性最接近 oracle 的防御,泄漏仍超过 oracle 的 40 倍。Figure 2 把充分性对 OPL(纵轴对数)作图,阴影角是至少与 oracle 一样可用且不比它更漏的区域;作者称没有被测防御进入该区域。Auto 无充分性,deny-all 不能放在对数轴上。
    • 作者称OPL 与良性任务完成率互不预测。Table 7:两个 OPL 相差不到 0.009 的防御,良性完成率相差 37 个百分点,较紧的那个完成更多任务。Progent(Sonnet-5,智能体 Sonnet-4.5)无防御 87.6%、有防御 87.6%,代价 0.0 个百分点;AC4A(Haiku-4.5,智能体 Sonnet-4.5)从 85.6% 到 39.2%,代价 −46.4 个百分点;Auto(智能体 Sonnet-5)从 92.4% 到 89.0%,代价 −3.4 个百分点。
    • Table 4 用 banking user task 2 的房租更新(金额 1200 应为 allow)及三个错误金额变体预览分歧:Progent 在两个决策模型下四列都 allow;perm-assistant 两模型都只允许 1200;CaMeL 两模型四列都 deny;AC4A 在 Sonnet-5 下四列都 allow,在 Haiku-4.5 下四列都 deny;Auto 允许 1200、拒绝 0.0 和 0.01,字符串金额变体未发出,记为 —。

    过度限制与更新步骤

    • 过度限制(Table 8):在 1432 个有权调用上,Sonnet-5 下拒绝数与 over-restriction 为 perm-assistant 126 / 0.088、Progent 325 / 0.227(flips 16)、AC4A 442 / 0.309、CaMeL 594 / 0.415。Haiku-4.5 下 CaMeL 为 590 / 0.412,AC4A 为 546 / 0.381。作者称 CaMeL 在任一决策模型下拒绝最多,在 Sonnet-5 下接近 Permission Assistant 的五倍,同时它又是该模型下四个防御里第二紧的,因此其一部分紧度来自拒绝任务有权做的步骤。只有 Progent 有 flips:它在一种被接受的顺序上允许对长期订单的更新,在另一种上拒绝。Auto 在三次运行、每次 316 个调用的子集上,拒绝 4–8 个,over-restriction 为 0.013–0.025。
    • 更新步骤(Table 9,3551 个候选、每个计一次):冻结初始策略 S0 后,Sonnet-5 的 OPL 从 0.1026 升到 0.1605(作者称 1.56×),充分性从 0.902 到 0.888,完全供给从 70/92 到 72/92;Haiku-4.5 从 0.1312 到 0.1622(作者称 1.24×),充分性从 0.859 到 0.848。按部署方式在每个决策点计分时,Progent 在 Sonnet-5 下泄漏 0.0341,Haiku-4.5 下 0.0661。作者称更新去掉的是任务不需要的权限,充分性几乎不变。
    • 决策模型(Section 6.4.2):Ajar 按设计不运行智能体,测试对着重放的参考前缀。换成 Haiku-4.5 后,四个双模型防御的分数都变,且超过自身运行间变异的变动都是变松。充分性和完全供给数对四个防御都下降。AC4A 是例外方向:Haiku-4.5 的 OPL 从 0.1113 降到 0.0896,同时充分性从 0.715 降到 0.609。作者称较弱的决策模型不是沿权限–效用前沿滑动,OPL 和充分性必须成对阅读。

    其他消融与分析

    • 伤害权重(Table 10):六种档权重相对默认 (1,3,9,27) 的排名相关都不低于 0.67;保持权重随档上升的方案高于 0.78。不加权 (1,1,1,1) 扰动最大。perm-assistant 在 Sonnet-5 下,默认 OPL 0.0810,不加权 0.2070,线性 (1,2,3,4) 为 0.1373。
    • 测试数量(Section 6.5):作者按任务子采样重算,称排序在较少测试下大体保持;具体曲线端点在正文截断处,论文未在已读正文中给出每一档子样本的 OPL 数字。
    • 任务措辞与运行间方差(Section 6.5):作者改写任务提示词并重复相同输入,称防御排序大体不变,而模型调用本身不复现自己的判决,该运行间方差决定 Table 5 能分辨的最小差值。
    • AC4A 的方向:同一张 Table 5 上,换成较小决策模型后 AC4A 的 OPL 下降、充分性也下降,作者把它列为“多余调用和必需调用一起被去掉”的情形,而不是四个防御同向变松。
  5. What are some points that can be further explored?

    作者称标签多由 Ajar 断言,且分数来自重放前缀而非真实智能体运行。

    作者指出的局限与后续方向

    • 标签来源(Section 4.4、Section 6.1):宿主谓词只在攻击 sink 与参考解写入两种情形确认标签;读的标签不能被任一谓词确认。作者把“多少分数量在我们自己的判断上”写成今天能陈述的界,并报告 27.0% 的测试由 AgentDojo 谓词确认,其余由 Ajar 断言。
    • 重放而非实跑(Section 5.2、Section 6.4.2):包装器重放前缀并补上防御期望积累的上下文;作者写明一次实跑会在运行中建立这些状态,重放并不能提供全部。Ajar 按设计不运行智能体,因而智能体模型不影响分数,决策模型可以。
    • Auto 的覆盖(Section 6.2.5):智能体并不总是发出被要求的调用,未发出的候选到不了分类器,Auto 在更小的集合上计分,因此没有充分性和完全供给数。
    • 历史配置的循环(Section 6.2.2):Permission Assistant 的第二种配置用其他折的真值标签建历史,而该历史正是用 Ajar 正在计分的标签建成的。
    • 权重与基准(Section 6.5、引言):作者称默认伤害权重会改变绝对值,结果依赖的是档按伤害排序,而不是所选的具体权重。引言写 Ajar 不特属于某一个基准或防御,再挂一个宿主基准意味着再写一个适配器;实验只实例化了 AgentDojo。
    • 代码(摘要):作者写 Ajar 的源代码可获得;论文中“计划并入某库”一类表述未在已读正文里出现,故不把发布状态写成后续工程承诺以外的内容。

    实验覆盖范围

    • 被测防御为 Progent、CaMeL、AC4A、Permission Assistant、Claude Code Auto,共 5 个;前四个各有 Sonnet-5 与 Haiku-4.5 两个决策模型,Auto 只有 Sonnet-5(Section 6.1、Table 5)。
    • 测试来自 AgentDojo v1.2.2 的 97 个良性任务、四个套件,共 10471 个测试、3551 个互异候选,决策点 k=0 到 18;充分性分母为 92 个可评分任务(Table 3、Section 6.1)。
    • 良性效用在 97 个任务上各跑有防御与无防御两遍,智能体为 Table 7 所列的 Sonnet-4.5、Sonnet-5 或 Haiku-4.5,两遍都无注入。
    • 攻击准入的分母:四个研究型防御为 609,Auto 为 581(Table 5)。论文报告的是准入计数,不是基准上的端到端攻击成功率。
    • 稳定性实验重算了六种伤害权重(Table 10),并改变每任务测试量和任务措辞(Section 6.5)。论文未报告 Ajar 分数与人工标注的一致性,也未报告每次 decide 的查询次数或耗时。
  6. Summarize the main content of the paper

    Ajar 用宿主基准的真值给防御的开放权限打分,OPL 独立于攻击成功和效用。

    Ajar 量的是智能体防御留下的开放权限:任务不需要、但防御仍会允许的工具调用。

    现有基准把防御放在间接提示注入上,用攻击成功率和良性效用打分。两者都在实际发生的那次运行上计算,因此一个从未被问到的危险调用不会拉低分数。

    Ajar 挂到已有基准,复用任务、工具模式、参考解和目标状态。它在参考解的每个前缀上提供候选:路径外工具、参数故障、注入的 sink,以及必需调用和有权调用。预言机用宿主的工具集和目标谓词标 ALLOW 或 DENY,DENY 再按可撤销性和影响范围放入 H1–H4,权重 1、3、9、27。OPL 是被放行多余调用的伤害加权占比,充分性是必需调用被放行的占比,二者分开聚合,以免互相被钻空子。

    在 AgentDojo v1.2.2 的 97 个任务、10471 个测试上,Sonnet-5 下 perm-assistant 的 OPL 为 0.0810、充分性 0.961、攻击准入 25/609;CaMeL 为 0.0895、0.700、16/609;Progent† 为 0.1026、0.902、34/609;AC4A 为 0.1113、0.715、46/609;Claude Code Auto 的 OPL 为 0.3009、准入 74/581,且无充分性。argument-exact oracle 的 OPL 为 0.0020。作者称没有防御进入“又紧又能用”的区域,且 OPL 相差不到 0.009 的两个防御,良性完成率可以相差 37 个百分点。冻结 Progent 的策略更新后,Sonnet-5 的 OPL 从 0.1026 升到 0.1605。换成 Haiku-4.5 后,充分性四个防御都下降,OPL 并非一律上升:AC4A 从 0.1113 降到 0.0896。

    作者的结论是:开放权限属于整套决策过程,随决策模型和再次提问而变,不能从攻击成功率或良性效用推出来;同时报告 OPL 和充分性,是为了让全拒绝和全允许都不能单独拿到好分数。

Read originalarxiv.org