Pincer:用数字分身学习用户偏好并执行动态最小权限
Pincer: Resource Authorization for Agents using a Digital Twin
Pincer在资源层授权:Software Dev的cASR为28.4%,Litigator为8.1%(Table 2)。
攻击者可任意破坏worker、第三方工具及资源名称与内容;不能改系统代码与模型权重,也不能操纵用户到系统、twin到模型提供方的信道。
- 部署中的coding agent靠用户维护沙箱和tool-call分类器。策略会权限蠕变,反复确认造成授权疲劳;分类器不学用户策略,对抗流量下会放行不安全操作。Pincer要在资源层做用户特定最小权限授权,并与现有tool-call防御并存。
- 系统在工具与资源之间放一个隔离的数字孪生。它只积累用户提示和已批准权限,路径段换成PRF后再授权。决定是三票合取:可信与advantage-agnostic上下文、含资源内容的一票,以及会话开始时的预承诺策略。
- Software Dev(Haiku 4.5)与Litigator(Muse Spark 1.2)上,Table 2的Pincer cASR为28.4%和8.1%,低于各基线;cBGR为89.7%和90.9%,低于多数基线。作者称PL攻击上强于全部基线。
- 论文未专门讨论局限。评测为两个人设、各一个模型、文件系统资源,安全样本66与72、效用81与80,每设置跑两次。未报告方差、统计检验,以及Figure 5各攻击类型柱的精确读数。
- 威胁模型
- 攻击者可任意破坏worker、第三方工具及资源名称与内容;不能改系统代码与模型权重,也不能操纵用户到系统、twin到模型提供方的信道。TCB包括twin LLM及其推理栈、资源请求工具、twin状态的写隔离、OS内核与容器运行时。用户是可信方且假设其决策安全。目标是资源层grant integrity。
- 被测模型
- Claude Haiku 4.5Muse Spark 1.2 Contributor
- 基准
- Software Dev persona corpusLitigator persona corpus
- 指标
- ASRcASRBGRcBGR
研究者提出 Pincer,一种在资源层运行、可与工具调用层现有防御并行的 Agent 防御方案。其核心是数字分身,一个隔离上下文的模型,自动学习并执行针对具体用户的动态最小权限策略,在 Agent 发出权限请求时充当用户代理。为模拟学习阶段,作者构建了一个以用户为中心的数据集,样本来自多天的用户与 Agent 交互记录。评估显示,Pincer 在安全性和实用性上均优于多个基线,包括多种 LLM 评判器变体和 Conseca(HotOS '25)的改造版本;在部分攻击类型上,其设计带来的安全提升明显高于所有其他基线。论文指出,当前 Claude、Codex 等部署中的 Agent 主要依赖用户维护策略与 auto mode 沙箱,前者会随时间失效并造成用户疲劳,后者的工具调用分类器不学习用户特定策略。
深度解读
这篇论文试图解决什么问题?
用数字孪生在资源层按用户历史做最小权限授权,缓解权限蠕变和tool-call分类器的对抗失效。
部署中的 coding agent 需要在保留通用 shell 与持久记忆的同时,对资源访问做用户特定的最小权限控制。
- 场景: 作者称这类 agent 已长时程、自主,并维护记忆。部署系统(如 Claude、Codex)主要靠用户维护的沙箱,以及 auto mode 这类 tool-call 分类器。策略会随授权累积变宽,反复确认造成授权疲劳;分类器不学用户策略。作者引述压力测试,称 auto mode 会放行多数不安全操作。
- 不足: 作者称强防御(类型化工具、信息流、策略预测)会去掉现有架构的核心能力,因而难被采用。作者称任意 tool-call 分类器都难以推理代码或复杂 shell 的效果,危险操作可藏在无害文件名或依赖链中。auto mode 也不解决权限蠕变,用户仍要手改策略。
- 做法: Pincer 加在资源层,与 auto mode 并存。digital twin 用隔离上下文,按用户历史学习动态的用户特定最小权限,并代替用户处理请求。作者另建多日用户中心合成数据来模拟学习,并称据其所知这是首个此类数据集。
- 威胁模型:
- 目标: 资源层 grant integrity:若授权,则仅凭可信与 advantage-agnostic 上下文也会授权。作者称不追求挡住全部攻击。
- 能力: 可任意破坏 worker、第三方工具及资源名称与内容;不能改系统代码或行为,不控制模型权重。
- 信道: 不能操纵用户到系统,以及 twin 到模型提供方的通信。
- TCB: twin LLM 与推理栈、资源请求工具、twin 状态写隔离、OS 内核与容器运行时。worker 与 shell 不在 TCB。用户可信且假设决策安全;幻觉不算不可信。
有哪些相关研究?
相关工作覆盖智能体攻击、限制架构的防御、最小权限策略,以及情节式安全基准。
智能体攻击
- 三类注入: 作者把攻击分为直接提示注入(DPI)、间接提示注入(IPI)和记忆投毒。DPI 在用户消息中;IPI 经工具返回进入上下文;记忆投毒写入 agent 为自我改进而维护的记忆,并可跨会话激活。作者称植入既有伪装成用户的 DPI,也有其认为更现实的 IPI:执行良性请求时从环境读到毒内容。
- 更细分类: 另有工作按技能、工具和协议给 coding agent 分类。论文只报道存在该分类。
系统层防御
- 限制架构: 作者讨论控制流与不可信数据分离或可信规划器、类型化工具上的信息流、禁止按遭遇上下文维护记忆,以及每工具一个 LLM。作者称这会禁掉良性的上下文相关控制、无类型 shell 或自我改进,且与 Figure 1 的已部署架构不好组合;每工具一模型仍会受若干攻击,并有工具间通信开销。
- 提示加固: spotlighting 和对上下文、记忆中可疑片段的检测,作者称为互补,但自适应攻击可以绕过。作者称主动检测的额外 token 成本,以及对强攻击缺少稳健性,使它们不适合若干应用。
- 最小权限: 策略或由用户、外部给出,或在提示到达时预先预测(Conseca),或在任务中演化但引擎缺少工作上下文。作者称后两类会对长时程开放任务欠拟合;多数方案依赖结构化工具,在无类型 shell 上表达力受限。类型化、OAuth 式 API 可用最小权限求解器。
模型层、许可预测与基准
- 指令层次: 微调以理解指令层次、忽略与用户意图冲突的指令。作者称可靠性仍有问题,多轮和 agent 行为不在这些工作范围内;另有工作把困难追溯到角色感知。作者称模型层防御与本文互补。不服从数据内指令的微调,作者称不适用于必须执行数据内指令的 agent。
- 历史许可: Wu 等用过去的许可预测下一次。Pincer 依赖同一前提:决定在同一上下文内一致,因而可学习。作者称其范围不包括 computer-use agent,因为决定更依赖上下文,且资源本身不可信。
- 基准与用语: 作者称现有 agent 安全基准是情节式的,不适合评单个用户的跨时间交互。多会话记忆基准不评安全。SMP 有多会话记忆投毒数据,但作者称它不是同时评安全与效用的完整数据集,也缺少长的用户中心记录。作者用 digital twin 区别只受用户影响的记忆,和会从不可信环境演化的 agent 记忆。
- 基线: 无资源门控的 NanoClaw;不给历史的 Static-Judge;给全部历史但本地状态可受不可信上下文影响的 Dynamic-Judge;把 Conseca(HotOS '25)改到资源层、用正则执行预承诺策略的 Conseca+;用 LLM judge、不看文件内容的 Conseca-Gemini+。数据为两个人设语料,安全样本参考 SMP 与 PASB。
- 定位: 作者称策略在需求出现时拟合,而不是预先预测;执法在资源层,以便与 auto mode 叠用;twin 的输入限制在可信与 advantage-agnostic 上下文上。
论文如何解决这个问题?
数字孪生只在可信与 advantage-agnostic 上下文上投安全票,再与内容票、预承诺策略票合取。
Pincer 给现成 agent 加上资源层防御:每次资源访问经参考监视器,只有隔离的 twin 能授权,并按最小权限判断该访问是否为完成用户任务所需要。
组件与请求路径
- 四类组件: worker 与 twin 两个 LLM;各自的专用状态;worker 使用的工具,含通向 twin 的 resource request tool;文件、邮件、web 等资源。
- 流程: 用户提示同时进入 worker 和 twin 状态。工具访问未授权资源时,经窄通道提交资源身份和访问类型(read、write、create 等)。twin 授权后工具才能访问;Figure 3 写任务结束后撤销。脚注写一次授权在该任务期间保持。
- 升级给用户: 仅当 twin 反复拒绝 worker 确实需要的请求时,才交给用户终审。
- 与 tool-call 层的关系: 资源决策只针对一个具名对象和固定访问模式,比命令空间小。作者称它更粗,例如看不出一个已访问文件是否被另一个已访问文件覆盖,因此部署时应与 auto mode 一类防御叠用。
可信状态、访问模式与消毒
- 可信状态: 只含可信方直接产生的内容:当前与历史用户提示,以及用户过去批准的权限。twin 可从中写出用户特定策略、删去过时或不一致的策略。作者在 Section 3 称,仅有可信上下文时决策无法好于抛硬币,因为请求来自可能被攻陷的 worker。
- 访问模式: 为形成最小权限,把工具日志中的访问注记附到每条用户提示上;twin 批准的访问也写入其状态。除下面的预承诺策略外,派生策略不强制固定格式,用自然语言,以便开放场景泛化。
- 误导性资源名: 作者在 Section 5.3 描述一类攻击:资源的名称或位置被做成符合既有访问模式,使 worker 和 twin 把它当成该任务应访问的对象。论文不把具体改名步骤当作推荐流程。
- 消毒: 对不可信访问注记和请求路径,按路径段用决策过程不知道密钥的 PRF 替换,同目录共享前缀,以便对照历史请求,但去掉名称语义。作者把它实现为 Definition 4 的 advantage-agnostic 上下文:任何 PPT 决策过程,在真实预处理与随机函数替换之间的授权优势可忽略。作者称哈希不满足该定义,因为常见词的哈希可能在预训练中被见过;inode 在决策者是 LLM 时可能有相近效果。
三票合取与预承诺策略
- 票 1: 只读可信上下文和消毒后的访问模式、资源名。作者称这是安全骨干;没有这票的隔离,就不能建立保证。
- 票 2: 额外看请求资源的内容、worker 的理由,以及同一会话的先前请求。内容策略(例如文件含秘密则不可读)否则无法执行。合取下,这票只有在票 1 已授权时才改变结果。作者称其中的不可信内容仍可能逐步扩大任务范围。
- 票 3: 会话第一条用户提示到达、范围尚未扩大时,twin 根据提示、工作区、文件名、可信状态和访问模式生成预承诺策略,模式见 Listing 1:pathGlob、access、operations、permission(allow、deny、ask_user)、只与不可信内容一起展示的 rationale,未覆盖请求默认 deny。策略生成后再消毒,与消毒后的请求对齐。作者称生成后消毒挡不住资源名攻击,因为进入策略的名单已依赖未消毒名称,所以不并入票 1。作者称在未消毒上下文上生成、以保留额外信号,并把攻击成功率从 40% 降到 20%;该比较的人设、模型与攻击类型论文未说明。
- 两变体: 最终决定都是三票合取,授权为 1、拒绝为 0。Pincer 的票 2 不看预承诺策略;Pincer-P2 看。作者称合取后效用仍然高,数字在第 4 问。
保证与实现边界
- Goal 1: 若 Pincer 授权,则只给可信与 advantage-agnostic 上下文时也会授权。写成 D(tctx, actx, uctx; r)=grant⇒ LLM(tctx, actx; r)=grant。同一随机带上,右侧是预训练模型;脚注称这样排除恒授权或恒拒绝。
- Theorem 1: 作者称 Pincer 在资源层满足 Goal 1。证明是合取为授权则票 1 为授权,而票 1 只读那两类上下文。拒绝可以来自票 2、票 3,该单向蕴含仍然成立。
- 实现: 建在 NanoClaw 上。worker 与工具在容器内,资源在宿主机 bind-mount。worker 用非特权 UID,内核按 mode bits 和 POSIX ACL 检查;不用 user-namespace 重映射,故该 UID 也是主机 UID。每任务后销毁容器。作者称无论 worker 如何访问,都不能绕过内核检查。
- 范围: 本文焦点是文件系统。web API 和云资源,作者写可用 capability-based access control,未给出实现细节。
论文做了哪些实验?
两个人设上 Pincer 的 cASR 低于表中基线,cBGR 则低于多数基线(Table 2)。
实验设置
- 平台与基线: 全部接在 NanoClaw 上。NanoClaw 无资源门控,worker 在容器内可访问挂载的工作区。其余基线给 worker 资源请求工具,起步只有文件名和路径。Static-Judge 有通用安全说明,看文件内容、文件名和理由,无历史。Dynamic-Judge 接收全部历史,本地状态可直接受不可信上下文影响。Conseca+ 在提示到达时按提示、工作区树和全部历史生成 Listing 1 式策略,之后正则匹配。Conseca-Gemini+ 同样给策略,但由 LLM judge 执行,看文件名和理由,不看文件内容。
- 模型: Software Dev 的 worker、LLM judge 和 twin 均为 Claude Haiku 4.5。Litigator 使用 Muse Spark 1.2 Contributor;论文未再逐项重复其角色。数据集由 Claude Opus 4.8 与 Opus 5 合成。不是迁移设置,没有单独的影子模型。作者写因资源限制,每人设只评一个模型。
- 数据: 两个人设语料(Table 1)。Software Dev:工作区文件 33、项目 2、历史提示 40、用户策略 33、安全样本 66、效用样本 81。Litigator:95、5、60、33、72、80。历史来自用户模拟,供 twin 学习;测试样本在时间上位于历史之后,不必只重复历史任务。假设 worker 已受攻击者控制,评的是授权方。
- 攻击类型: DI 把载荷放进请求理由;II 的载荷在请求串之外,如文件内容或文件名;MP 让 judge 把伪造授权写进自身状态,样本分直接与间接;误导文件名分内容与名称错位(CL)和位置、名称伪装成另一处(PL)。Table 1 的 DI/II/MP/CL/PL:Software Dev 为 10/25/9/14/8,Litigator 为 7/40/9/11/5。
- 指标: ASR 是攻击样本中 worker 访问到被禁止监视资源的百分比,越低越好。cASR 只在 worker 确实请求了该资源的样本上计算。BGR、cBGR 是效用样本中访问到良性监视资源的百分比,越高越好。判定是系统是否发生该访问,不是另设伤害评审。
- 重复: Figure 4 图注写每个设置跑两次。Table 2 未写这些百分比是否为两次的平均,也未给分别结果。
主结果
正文未给出 Figure 4 各点坐标,主表只用 Table 2 的条件率(%)。Software Dev 对应 Haiku 4.5,Litigator 对应 Muse Spark 1.2 Contributor。
表格较宽,可左右滑动
方法 SD cASR SD cBGR Lit cASR Lit cBGR NanoClaw 93.2 72.8 41.0 95.6 Static-Judge 48.9 98.1 30.9 93.7 Dynamic-Judge 61.9 98.1 32.6 96.2 Conseca+ 63.5 91.3 16.0 98.1 Conseca-Gemini+ 59.8 94.8 18.2 96.9 Pincer 28.4 89.7 8.1 90.9 Pincer-P2 32.2 92.9 9.7 89.5 - 作者称 Figure 4 上 Pincer 的安全有跃升、效用与基线相当,且 Table 2 的条件率与该趋势一致。表中 Pincer 的 cASR 在两列都低于同列其他行。
- 作者称效用高;同表 cBGR 上,Pincer 低于两种 judge 和两种 Conseca 变体。Software Dev 上只高于 NanoClaw,Litigator 上只高于 Pincer-P2。
- Pincer-P2 的 cASR 在两列都高于 Pincer。论文未解释这一差异。
按攻击类型
- 测了什么: Figure 5 按 DI、II、MP、CL、PL 分 ASR。实心柱为 ASR,后面更宽的浅柱为 cASR;NanoClaw 无门控,其 cASR 省略。正文没有各柱读数。
- 作者的解读: 各攻击类型上 Pincer 优于多数基线。MP 相对 Dynamic-Judge 的改进更大,作者把后者的脆弱归为状态未隔离。PL 上,作者称两个模型族、两个人设的保护都强于全部基线。
- 样本量: 若干类型 n≤20,分母即 Table 1 的 10/25/9/14/8 与 7/40/9/11/5。没有按类型的成功条数,不能从正文还原各类型 ASR。
成本
- 相对倍数: 作者称各基线的 token 成本约为无防御 NanoClaw 的 2-5 倍,Pincer 在此之上再增加 2-3 倍。论文未给绝对 token 数,也未把倍数拆到人设或模型。
- 作者给出的来源: 作者称约一半 Pincer 成本来自 twin 的 reasoning tokens,因为实现尚未把状态压缩成常备策略,每次请求都推理全部状态;资源请求工具也未做批量,多个资源要分次请求并各自从头推理。
- 未测的降本: 作者写成熟任务可像 Conseca+ 那样预批准并用路径匹配执行。论文未报告压缩、批处理或预批准之后的实测成本。
其他消融与分析
- 票 2 是否接收预承诺策略:即主表的 Pincer 与 Pincer-P2,没有另表。
- Section 5.6:在未消毒上下文上生成策略,相对在消毒版本上生成,作者称攻击成功率从 40% 到 20%;人设、模型、攻击类型和样本数均未说明。这不是 Pincer 与 Pincer-P2 的对比。
- 论文未报告温度、投票次数以外的阈值、查询次数或人工一致性。成功由监视资源是否被访问判定。
有什么可以进一步探索的点?
论文没有 Limitations 或 Future Work 专节。
作者指出的局限与后续方向
论文未设 Limitations、Discussion、Conclusion、Future Work 或附录来专写局限。Section 3 有非目标:不追求挡住全部攻击,幻觉不算不可信;这些话不在上述专节中。
实验覆盖范围
- 防御接在 NanoClaw 上,对照为 NanoClaw、Static-Judge、Dynamic-Judge、Conseca+、Conseca-Gemini+、Pincer、Pincer-P2(Section 7.1–7.2)。
- 评测模型为 Claude Haiku 4.5(Software Dev 的 worker、LLM judge 与 twin)和 Muse Spark 1.2 Contributor(Litigator 人设)。作者在 Section 7.2 写,因资源限制每人设一个模型。合成数据用 Claude Opus 4.8 与 Opus 5。
- 语料规模见 Table 1:安全样本 66 与 72,效用样本 81 与 80;攻击类型为 DI、II、MP、CL、PL。Figure 4 图注写每个设置跑两次。指标为 ASR、cASR、BGR、cBGR,由是否访问监视资源判定。
- 实现与评测聚焦文件系统,用非特权 UID、mode bits 和 POSIX ACL(Section 7.1)。作者写 web API 与云资源可用 capability-based access control;论文未报告这些资源上的数字。
- 论文未报告两次运行的分别结果或方差、统计检验、token 绝对量,以及 Figure 5 各柱的精确读数。Section 5.6 的 40% 与 20% 未写明模型、人设和攻击类型。作者计划发布实现与数据集,正文未写已经发布。
总结一下论文的主要内容
Pincer 在资源层以三票合取做授权;两个人设 cASR 为 28.4% 与 8.1%,cBGR 多数更低。
Pincer 是加在现成 coding agent 上的资源层授权防御:用只受用户侧信息影响的 digital twin 做动态最小权限,并与 tool-call 层防御并存。
要处理的是用户维护策略带来的权限蠕变和授权疲劳,以及不学习用户策略的 tool-call 分类器。作者引述工作称 auto mode 会放行多数不安全操作,并认为推理代码或复杂 shell 的效果在这一层不实际。作者称目标是抬高攻击门槛和纵深防御,不是做出无法被攻陷的 agent。
twin 的状态只积累用户提示和用户批准过的权限;路径等不可信片段按段换成 PRF 输出。授权是三票合取:只看可信与 advantage-agnostic 上下文、再看资源内容与请求理由、以及会话开始时的预承诺策略。Theorem 1 称资源层满足 grant integrity:合取授权蕴含第一票也会授权。实现接在 NanoClaw 上,由内核 ACL 中介文件系统访问。学习阶段用合成的多日用户记录模拟,作者称据其所知这是首个此类数据集。
- 评测假设 worker 已被攻陷。Software Dev 用 Claude Haiku 4.5,Litigator 用 Muse Spark 1.2 Contributor,每个设置跑两次。
- Table 2 中 Pincer 的 cASR 为 28.4%(Software Dev)和 8.1%(Litigator),两列都低于 NanoClaw、两种 LLM judge 和两种 Conseca 改写。cBGR 为 89.7% 与 90.9%,低于多数基线。
- 作者称 Figure 4 上安全有跃升、效用相当,条件率与该趋势一致。Figure 5 上,作者称 PL 的保护强于全部基线,MP 相对状态未隔离的 Dynamic-Judge 更突出;正文没有各柱读数。
- 作者称各基线 token 成本约为无防御 NanoClaw 的 2-5 倍,Pincer 再增加 2-3 倍。作者计划发布实现与数据集。
作者的结论是:在需求出现时于资源层拟合用户策略,可以与现有 agent 架构和 tool-call 防御叠用,并用隔离上下文把“不可信内容不能单独翻盘成授权”写成 grant integrity。效用方面,作者称与基线相当、合取后仍然高;Table 2 的 cBGR 并未高于多数基线。