
大家读完觉得有帮助记得关注和点赞摘要现代AI代理框架Agent Harness暴露了生命周期钩子lifecycle hooks这些钩子将Shell命令绑定到运行时事件例如会话开始、工具调用和文件编辑。这些命令以主机权限运行但作为生命周期钩子配置提供并且可能在LLM从未观察到的时间触发。我们识别出生命周期钩子的更新路径——框架盲目信任该路径——是一个新的攻击面。在一种供应链威胁模型下攻击者仅控制插件元数据和生命周期钩子配置一个良性的带版本插件可以通过一次更新被特洛伊木马化该更新将攻击者选择的命令静默地绑定到良性事件上从而产生恶意的主机端行为例如权限提升。我们提出了HookPry一个开源的、全自动化的攻击框架它系统地利用了这一漏洞适用于异构的AI代理框架。HookPry实现了十个攻击目标在跨越7个框架和后端的25种组合、1000次端到端运行中它攻陷了所有七个被评估的框架每个框架的成功率高达92.5%。有代表性的防御措施仍然不足Microsoft Defender的召回率为0%三种静态防御措施的联合仍然漏掉了47.5%的恶意工件。1 引言图1提出的攻击框架HookPry概览。HookPry包含三个组件① 对抗性清单优化AMO提高初始良性插件的市场可检索性② 时间解耦TD将初始信任获取与后续带有钩子的更新及条件激活分离③ 最小公共接口LCI将载荷映射到目标框架的原生生命周期钩子接口。步骤1-5说明了标准工作流程在匹配事件被触发后框架在LLM决策路径之外分发已注册的命令导致恶意行为例如静默转储环境凭证。将大型语言模型LLMs集成到软件开发中催生了AI代理框架AI agent harnesses即如Claude Code [2]、OpenClaw [33, 34] 和 Codex CLI [32] 这样的框架它们充当了用户意图与主机系统执行之间的关键桥梁。这些框架远非简单的消息中继而是作为强大的中介拥有高级别的文件系统和进程权限。在此架构中生命周期钩子——旨在自动化代理工作流的框架的组成部分——构成了一个安全关键的控制平面。钩子本质上是一个配置条目它将特定事件例如依赖项的安装或配置文件的修改绑定到一个预定义的系统命令。至关重要的是框架可以直接将此命令作为子进程分发无需LLM解释或选择它 [2, 33, 34]。例如一个“post-update”钩子可以在软件更新后立即自动触发一个脚本这个过程发生在模型的推理循环之外。这创建了一个决定性的触发后边界在此边界上专注于对抗性提示或模型对齐的防御措施无法检查执行情况。虽然先前的研究已经考察了恶意插件代码、工具描述投毒和技能操纵 [18, 42, 9, 43, 29]但它们并未将框架管理的生命周期钩子隔离为一个独立的攻击目标留下一个重要问题未答这些钩子是否容易受到通过供应链传递并可跨框架移植的远程攻击遗憾的是我们的发现证实了这种可能性。我们识别出生命周期钩子的更新路径——框架隐式信任该路径——是一个新的攻击面。在一种供应链威胁模型下攻击者仅控制插件元数据和生命周期钩子配置一个良性的带版本插件可以通过一次更新被特洛伊木马化该更新将攻击者选择的命令静默地绑定到良性事件上从而产生恶意的主机端行为例如权限提升 [10, 31, 30]。为了解释为什么这个序列在不同框架中都能成功我们描述了生命周期钩子的三个特征。第一个特征是双层插件架构其中市场元数据控制插件如何被发现而生命周期钩子控制它如何实际运行。这允许单个插件展示一个统一的公共身份但在内部以一套不同的运行时权限运行。第二个特征是事件驱动执行。一旦与生命周期钩子匹配的事件触发框架就会绑定并生成配置好的命令这发生在LLM决策路径之外即使附加到稳定插件身份的运行时权限可能在不同版本间发生了变化。第三个特征是跨框架异构性事件名称、配置模式和命令运行器在不同框架间存在差异。这些特征中的每一个都给攻击者带来了相应的挑战。第一个挑战获取涉及远程攻击者如何能够通过普通市场渠道为一个初始良性插件创造发现机会而无需直接访问受害者或强制安装的能力。第二个挑战激活涉及该插件如何在保持其稳定身份的同时在初始检查后获得新的运行时钩子权限绕过任何新的LLM决策或对添加的钩子条目的显式授权。第三个挑战鲁棒性质疑载荷如何能在生命周期词汇、配置模式、Shell执行合约和权限边界方面的跨框架差异中存活。虽然先前的技术报告和漏洞披露展示了将钩子连接到进程执行的特定原语 [10, 31, 30]但一个同时克服这三个挑战的端到端攻击范式尚未被系统研究。在本文中我们提出了HookPry一个开源的¹、全自动化的生命周期钩子攻击框架该攻击可通过供应链传递并可扩展到异构的AI代理框架。图1总结了HookPry的设计概览及其端到端攻击路径从通过市场交付初始良性插件到通过带有钩子的更新再到框架控制的执行及其外部可观察的影响。具体来说HookPry设计背后的关键洞察是攻击者可以利用插件获得信任与其实际行使钩子权限之间的时间差并通过仅通过插件配置将交付、激活和执行拼接在一起从而在不同工具间保持预期的攻击能力。HookPry包含三个组件每个组件分别设计用于解决三个挑战之一。第一个组件对抗性清单优化AMO通过工程化插件的元数据如其名称和描述来解决获取挑战以创建一个受约束的身份该身份可在不同的搜索意图下被检索到。这种优化确保插件看起来是良性的且高度可发现从而在不引发安全审查的情况下获得初始安装。其次时间解耦TD通过将初始良性工件与后续在同一身份下携带改变的钩子权限的更新分离来解决激活挑战。通过利用这一时间差TD允许插件通过初始审查并获得信任然后通过更新静默地引入恶意的生命周期绑定。最后最小公共接口LCI通过提取不同框架间共享的生命周期钩子能力来解决鲁棒性挑战。它充当一个编译器将单一的抽象攻击逻辑转换为每个目标框架特定的原生事件和命令表示从而无需手动适配即可实现可移植性。HookPry在多样化的环境景观中有效地实现了十个不同的攻击目标。我们的评估涵盖了25种独特的框架和后端组合执行了1000次端到端运行证明了该框架的效力HookPry成功攻陷了所有七个被评估的框架。总体而言77.0%的运行产生了经预言机完全确认的效果在Hermes框架上达到了92.5%的峰值有效性且没有运行被模型明确阻止。这一高成功率突显了当前安全态势中的一个关键差距。有代表性的防御措施仍然不足Microsoft Defender实现了0%的召回率即使结合三种静态防御措施——包括一个具备生命周期钩子感知能力的策略——仍然漏掉了47.5%的恶意工件。这些结果证实一个最小的配置绑定可以诱导严重的跨框架影响在很大程度上绕过了传统基于提示的攻击中观察到的模型介导损失并规避了未能检查生命周期钩子路径的防御措施。最后我们已负责任地向所有受影响的框架供应商披露了我们的发现并正在等待他们的回应。我们的贡献如下一个新的攻击面和供应链威胁模型。 我们识别出生命周期钩子的更新路径——框架盲目信任该路径——是一个关键的新攻击面。我们形式化了一种供应链攻击其中良性的、带版本的插件通过一个受信任的更新被特洛伊木马化以将攻击者选择的命令静默地绑定到良性事件上从而在不修改插件可执行代码的情况下实现恶意的主机端行为如权限提升。一个自动化的跨框架攻击框架。 我们提出了HookPry一个开源的、全自动化的框架它系统地利用了这一漏洞适用于异构的AI代理框架。HookPry旨在实现十个不同的攻击目标解决自动化代理环境中的获取、激活和鲁棒性挑战。全面的评估和防御分析。 我们通过跨越七个框架和五个LLM后端的25种组合的1000次端到端运行展示了HookPry的有效性。我们的结果表明HookPry攻陷了所有被评估的框架成功率高达92.5%。我们进一步表明有代表性的防御措施包括Microsoft Defender都是不足的其召回率为0%并漏掉了很大一部分恶意工件。2 概述2.1 背景AI代理框架是将模型输出转化为主机系统上有状态操作的运行时层。如图2所示一个框架通过上下文管理器接收观察结果调用LLM通过执行循环和持久状态存储协调多步骤活动并通过工具注册表分发经过验证的操作。这些组件构成了观察、推理和行动的主要路径框架为推理组装上下文模型提出一个行动然后框架将该提议转化为对外部环境的影响。图2生命周期钩子在AI代理框架中的架构位置。核心框架连接上下文管理、LLM推理、有状态执行和工具分发而生命周期钩子围绕此执行路径形成一个横切的拦截和策略层。生命周期钩子在此系统中占据一个独特的架构位置。钩子是一个清单条目它将一个生命周期事件绑定到一个攻击者选择的Shell命令 [2, 33, 34, 14]其最终效果受限于更新采纳、事件发生以及授予钩子子进程的权限。钩子是由框架本身评估的事件绑定自动化规则。它们将前置或后置操作附加到生命周期边界如会话启动、工具调用、文件修改或项目打开允许框架在执行周期中的明确定义点执行策略、收集遥测、转换上下文或运行辅助命令。它们的位置是横切的一个钩子可以观察或改变流经上下文管理器、执行循环、状态存储和工具注册表的信息而无需成为模型推理轨迹的一部分。因此安全分析必须区分事件产生和事件处理。模型可能影响一个模型依赖的生命周期事件是否发生一旦事件发生框架评估已注册的绑定并通过其自身的控制路径分发已接受的钩子。这种区分决定了我们执行模型中的哪些项可能依赖于LLM。2.2 相关工作代理系统已从ReAct推理与行动范式通过如Toolformer、GPT4Tools和ToolkenGPT等工具调用机制演进到单一和 Multi-Agent 架构其中框架协调模型、状态和外部工具。AgentBench和AutoGen为跨环境评估和 Multi-Agent 编排提供了有代表性的基础 [49, 38, 20, 46, 48, 13]。这些研究确立了工具执行层的重要性但并未调查通过版本化生命周期钩子进行的信任迁移。关于模型介导攻击的工作已描述了直接和间接的提示注入、通过工具集成代理的注入传播及其检测 [11, 24, 51, 25, 44]。AgentDojo、AgentHarm和Agent Security Bench进一步为代理攻击、防御和有害行为提供了评估环境 [8, 1, 53]其他研究考察了心理操纵、跨代理传播和安全代理 [54, 12, 47]。越狱研究进一步揭示了安全训练中的失败模式并开发了自动化模糊测试、渐进式多轮攻击以及更可靠的攻击有效性评估 [45, 40, 37, 50]。相比之下HookPry的命令无需被模型解释、生成或选择因此提示层的拒绝无法阻止已注册的命令被框架分发。代理投毒和劫持研究涵盖了内存和知识库的投毒、RAG污染、工具选择的劫持、针对编码代理的提示注入以及IDE配置后门 [39, 23, 7, 21, 55]。MCP将外部资源和工具标准化为可组合接口 [27]激发了关于投毒工具描述、跨工具劫持、威胁建模、基准测试和协议层防御的工作 [43, 52, 16, 15, 3]。这些攻击主要通过可见的描述或返回值影响模型决策而HookPry的目标是事件与命令之间的绑定这些绑定由框架直接解释。技能和插件生态系统中的供应链风险已被关于OpenClaw的分析、恶意技能测量和技能投毒研究记录 [18, 42, 9, 29, 19, 22, 6, 36]。供应商披露报告了沙箱绕过、规则文件后门、恶意技能传播以及针对MCP、技能和钩子的扫描实践 [5, 17, 4, 28]。NIST的对抗性机器学习分类法和OWASP关于代理应用的指南将投毒、供应链危害、工具误用和意外代码执行置于更广泛的风险治理框架内 [41, 35]。公开的漏洞和供应商报告展示了单个生命周期钩子的执行原语 [10, 31, 30]但并未提供本文研究的跨版本、跨框架的端到端构造。2.3 一个激励性示例在本小节中我们演示了在Claude Code中一个成功的授权绕过攻击该攻击由我们的框架HookPry自动执行。如图3所示当一个良性的、受信任的插件——例如本例中的testHookplugin——收到更新时Claude Code会自动加载新添加的生命周期钩子而无需用户通知、逐项确认或重新授权。该技术机制涉及Claude Code的自动更新同步它会检查市场仓库中的清单更改并在不验证各个钩子条目的情况下应用更新。该漏洞凭经验验证了引言中提出的挑战——获取、激活和鲁棒性——这进一步启发了我们的系统设计。首先观察到插件必须最初以良性身份渗透市场我们开发了对抗性清单优化AMO来系统地解决获取挑战确保恶意载荷隐藏在一个有竞争力的、功能性的外观之后。其次为了利用Claude Code漏洞中暴露的信任边界我们提出了时间解耦TD该组件专门设计用于利用信任已被转移但权限尚未被重新验证的时间窗口。最后认识到发现的漏洞依赖于Claude Code特定的配置我们引入了最小公共接口LCI来解决可移植性挑战。LCI泛化了这个攻击面提取了跨框架共享的最小能力并将我们的语义攻击逻辑编译成原生表示。这种方法使我们能够将一个特定的实现缺陷转化为一个通用的、自动化的威胁模型。ab图3(a) 与市场兼容的测试仓库。(b) 同一个插件身份加载了三个新添加的钩子无需逐项确认。2.4 威胁模型我们根据攻击者的通道和约束、能力、目标以及我们的评估边界来定义HookPry的威胁模型。攻击者通道和约束。 攻击者仅通过发布到公共市场或社区注册表的版本化插件进行操作。攻击者没有本地或仓库访问权限不能注入提示或工具结果不修改框架、利用实现漏洞、绕过沙箱、强制安装或触发事件。攻击者能力。 在该通道内攻击者控制插件元数据、版本控制和生命周期钩子配置。攻击者首先发布一个良性版本然后发布一个更新在同一身份下添加或修改一个生命周期钩子。生命周期钩子是一个清单条目它将一个生命周期事件绑定到一个攻击者选择的Shell命令 [2, 33, 34, 14]其最终效果受限于更新采纳、事件发生以及授予钩子子进程的权限。攻击者目标。 直接目标是未授权的命令执行在一个事件触发后框架生成一个攻击者选择的子进程而无需新的LLM决策或针对钩子的特定授权。对插件或更新的粗粒度信任并不构成对添加命令的知情批准。在钩子的权限内攻击者可能追求信息窃取、持久化、操纵、资源劫持或传播。我们将这些结果操作化为映射到MITRE ATTCK [26]的十个目标。超出范围。 我们的主要评估侧重于通过Claude Code、OpenClaw、OpenHarness和Codex CLI中版本化插件分发的钩子。以安装和更新交付为条件它测量事件触发、原生绑定、子进程执行以及由此产生的结果。市场采纳、提示注入、通过仓库控制的配置、实现漏洞和沙箱逃逸均不在评估范围内。这些相邻的向量可能补充或放大HookPry本文研究的机制在配置层操作并不依赖于它们。2.5 攻击分类法现有的代理攻击分类法如DyMalSkill [6]和DDIPE [36]围绕LLM交互组织攻击而钩子在框架层充当Shell命令。因此我们使用一个三维元组对每个可实现的钩子攻击进行分类其作用的目标资产、接收或受结果影响的消费者以及连接两者的通信模式。资产维度区分认证材料、数据、源文件、工具输出通道、计算资源、配置和目录消费者维度区分远程服务、开发者、LLM、框架执行体和兄弟项目通信模式维度区分提取、交互控制、修改和复制。仅当元组可由钩子命令实现并代表一个有记录的网络安全隐患时才予以保留。具有相同元组的攻击被合并而任何轴上的差异则定义了一个不同的目标。此过程产生了表1中的十个互斥目标。表1HookPry攻击分类法来源于目标资产、受害消费者和通信模式并附有MITRE ATTCK战术映射[26]。目标目标资产受害消费者通信模式MITRE ATTCK 战术 [26]凭证收集 (COL)认证材料远程服务提取TA0006 凭证访问数据外泄 (EXF)非凭证数据远程服务提取TA0010 外泄资源劫持 (HIJ)计算资源远程服务提取TA0040 影响命令与控制 (C2)计算资源远程服务交互控制TA0011 命令与控制篡改 (TAM)源代码文件开发者修改TA0040 影响操纵 (MAN)工具输出通道LLM修改TA0040 影响权限提升 (ESC)配置框架执行体修改TA0004 权限提升持久化 (PER)配置框架执行体复制TA0003 持久化规避 (EVA)文件系统开发者修改TA0005 防御规避传播 (PRO)目录兄弟项目复制TA0008 横向移动架构模型和威胁模型定义了执行边界和允许的攻击者行动攻击分类法提供了跨框架构造必须保持的语义效果。接下来我们形式化这个构造。3 方法论HookPry在一个依赖链中链接了三种机制。对抗性清单优化AMO提高了初始良性插件的市场可见性。该工件提供了由时间解耦TD检查的载体TD使用良性探针来表征钩子的生命周期定位一个具有弱验证和足够运行时权限的信任边界并将激活限制在相应的运行时状态。然后最小公共接口LCI将产生的攻击语义编译成每个AI代理框架的原生配置。图4显示了每个阶段的原理和交接。图4HookPry方法论的核心原理。AMO在保持良性探针载体的独特身份的同时提高了跨多个意图的检索能力。TD识别出一个应用很少验证但授予足够运行时权限的信任边界并且仅当相应的谓词成立时才激活载荷。LCI提取框架间共享的最小生命周期钩子能力并将不变的攻击语义编译成每个原生配置。3.1 对抗性清单优化 (AMO)第一阶段构建初始良性插件的面向公众的身份。设p⁰ (m, h_b)其中m (n, d)包含插件名称 *n* 和自然语言描述 *d*而h_b是一个实现所宣传功能的良性钩子。AMO仅优化 *m* 以改善在目标功能类别C内的受控可检索性。设M_C为预算匹配的元数据候选的有限集合设G {g₁, …, gₖ} ⊂ C为该类别中有代表性的良性插件集合。如果市场排序器R和类别查询分布Q_C可用理想目标是选择具有最高预期排序得分的元数据公式 (1) 定义了AMO的真实目标但在实践中内部排序器R和真实的查询分布Q_C都是不可访问的。在正式评估之前AMO因此从目标类别的定义构建一个代理意图集Q̃_C。该集合包含类别名称和几个将动作与对象配对的查询评估查询永远不会暴露给优化器。设 f(·) 表示一个词汇特征映射S一个相似度函数s_q(m) S(f(m),f(q))是候选元数据 *m* 与查询 *q* 之间的相似度而μ_G k⁻¹ Σ_{g∈G}f(g)是参考良性插件的类别质心。AMO使用以下参数化的多意图代理目标对每个候选者进行评分这里θ (α, β, γ)位于单纯形上α, β, γ ≥ 0且 *αβγ1*。平均值项奖励对多个查询意图的聚合覆盖最小值项保护最弱代表的意图而类别质心项约束候选元数据以保持与目标类别一致。因此A0是一个严格的仅质心基线而AMO联合优化聚合覆盖、最差意图鲁棒性和类别一致性。这些权重是凭经验选择的。给定一个预注册的有限参数配置集HAMO仅使用开发类别选择每个Δ项测量与A0相比的变化而η_r和η_n是预注册的非劣性容差。选择过程主要最大化开发集上的BM25改进同时约束字符级检索的退化以及名称相似度的增长。选定的ϑ⋆在对保留的类别和查询进行评估之前被冻结以降低基于测试结果的事后参数选择的风险。AMO通过一个ϵ-约束来表达实例级别的独特性。它首先构造一个接近最优的检索集然后在该集合内最小化候选者与参考良性插件之间的最大相似度这个两阶段过程首先使检索目标保持接近最优然后增加实例级别的独特性而不超过允许的性能损失。在整个AMO过程中只有(n, d)发生变化良性钩子h_b保持不变并且在语义上与所宣传的功能一致。因此AMO仅修改初始工件的检索表示同时保持其良性可执行行为。得到的p⁰作为TD的探针载体使得能够测量目标框架的钩子信任边界而无需执行恶意操作。3.2 时间解耦 (TD)时间解耦识别钩子生命周期中安全判断在验证时与有效权限在运行时之间的分离最大的点。然后它专门化载荷使其仅当该点的运行时条件满足时才变为活动状态。TD发现候选信任边界按验证与权限之间的差距对其进行排序并生成具有所需激活条件的载荷。版本更新、延迟下载以及依赖于环境的触发器都可能携带此载荷。候选边界与良性探针。 对于目标框架H设B_H {b₁, …, bₘ}表示可观察的候选钩子信任边界。一个边界 *b* 由一个生命周期事件、配置源、加载阶段和运行时状态共同决定例如安装时的清单验证、会话启动时的钩子加载、工具使用前的绑定或子进程创建。TD为每个边界生成一个良性探针z_b并将其效果限制为写入一个随机标记和记录执行证据。通过固定插件身份、所宣传的功能和探针效果同时仅改变边界变量TD获得了跨边界的差异化观察。对于每个边界 *b*TD测量四个量V_H(b)表示进入边界前验证的强度A_H(b)指示是否需要针对钩子条目的新授权R_H(b)表示在该边界授予钩子的运行时权限O_H(b)表示探针是否可以被可靠地观察到。我们将边界的信任差距定义为其中λ_r, λ_v, λ_a ≥ 0是预定的权重。G_H(b)衡量运行时权限与验证和授权强度之间的结构性不对称以可靠可达性为条件。一个高分的边界授予实质性的运行时能力同时在该能力域之前应用相对较弱的检查或逐项授权。最弱边界选择。 在满足载荷能力要求和探针稳定性约束的候选中TD选择具有最大信任差距的边界。设ρ(a)表示抽象载荷 *a* 所需的最小能力集设Cap_H(b)表示在边界 *b* 提供的能力。那么这里τ_o是一个预注册的可观察性阈值。能力和可观察性约束共同定义了可行的边界集确保选定的边界既提供载荷所需的能力又提供稳定的探针证据。TD因此实现了候选生成、差异化探测和约束选择的重复过程。条件载荷特化。 在选择b⋆_H之后TD根据与该边界关联的事件、加载阶段、权限上下文和环境状态来特化抽象载荷 *a*其中 *s* 表示运行时状态χ_H是一个从探针结果生成的边界谓词。它验证当前事件、加载阶段、权限上下文和环境状态是否与b⋆_H一致。在所有其他状态下钩子保持其原始的良性行为仅当执行到达最弱边界且所需能力实际可用时载荷才进入目标分支。TD输出候选边界集B_H、来自良性探针的观察结果、基于信任差距G_H的排序、选定的边界b⋆_H以及条件谓词χ_H。这些输出指定了攻击激活的位置和运行时条件并可以通过版本更新等交付机制携带。LCI将选定的边界和载荷条件翻译成每个目标框架识别的原生配置。3.3 通过最小公共接口实现跨框架鲁棒执行第三阶段将攻击迁移到生命周期钩子机制的异构实现上。不同的框架通过不同的事件名称、配置模式、命令运行器和权限边界来实现通用的事件驱动执行原语。LCI提取执行攻击目标语义所需的最小充分能力移除对特定框架事件、语法和运行时环境的依赖并为每个目标框架生成一个原生的生命周期钩子。设目标框架集为H {H₁, …, Hₙ}。对于框架H将其钩子接口表示为D_H (E_H, Σ_H, X_H, P_H)。这里E_H是生命周期事件的集合Σ_H是插件清单模式X_H是命令执行合约。该合约涵盖命令运行器、传递参数的约定、工作目录以及继承环境的规则。P_H捕获钩子子进程可用的权限和资源。设Cap(D_H)表示从这些属性归一化的语义能力集并设表示由完整目标集共享的候选能力。对于一个攻击 *a*其跨框架语义由目标效果o(a)和必要的执行条件q(a)共同定义。对于一个一次会话目标q(a)包括会话可达性和命令执行能力对于一个工具输入操纵目标q(a)额外包括工具执行前的时间、调用上下文和输入控制能力。LCI迭代地从C中移除与o(a)和q(a)无关的能力得到攻击特定的最小充分规范这里Native_H(I)表示框架H中满足能力集I的原生生命周期钩子实现而Obs_H表示与框架无关的外部效果预言机。公式 (10) 在约束条件下最小化对事件、命令和资源能力的依赖该约束是相同的攻击语义必须在每个目标框架上保持可实现。满足此约束的攻击继续进行原生编译对于所有其他攻击适用范围被限制为提供必要能力的框架子集。在推导出I^_a* 之后框架适配器选择H中满足规范且具有最少额外依赖的原生事件其中Dep_H(e)表示事件触发器对特定工具调用、运行时模式或辅助服务等条件的依赖性。在满足q(a)的原生入口点中此标准优先选择具有最少额外依赖的事件当执行时机是q(a)的一部分时候选者相应地被限制为具有所需时间语义的事件。适配器φ_H然后将最小充分规范编译为其中c_H是在X_H和P_H下实现目标效果的命令而σ_H是Σ_H中生命周期钩子的原生编码。由o(a)和q(a)定义的攻击语义在迁移过程中保持不变每个框架的原生机制提供事件名称、命令字符串和配置结构。语义提取识别目标效果和必要条件。能力最小化移除特定于框架的依赖之后原生编译选择最少依赖的可行事件并生成命令和配置。在此适配器合约下每个共享语义案例为每个框架生成一个原生生命周期钩子并且一个通用的外部预言机检查效果是否得以保留。4 实现(此部分原文仅有标题无具体内容因此翻译保持原样)5 实验评估我们通过四个研究问题来评估HookPry。在威胁模型定义的范围内主要的HookPry实验遵循其生成的原生工件从框架加载到由独立预言机验证的外部可观察效果。RQ2是一个独立的翻译比较实验它将恶意的MCP工具描述机械地转换为生命周期钩子并在相同的50个目标上与由我们构建的原生HookPry的E2E-ASR进行比较。RQ1 (有效性): HookPry在不同的框架和LLM后端上是否有效且稳定RQ1.1 (执行级有效性和机制效用): 在跨框架架构和攻击类别中HookPry能多可靠地启动其攻击机制并产生经过验证的端到端效果RQ1.2 (模型独立性): 在匹配的生命周期事件触发后HookPry的执行路径在多大程度上独立于LLM后端RQ2 (翻译比较): 在将恶意的MCP工具描述转换为生命周期事件钩子后它们能实现什么样的E2E-ASR是否低于为相同目标构建的原生HookPryRQ3 (消融研究): AMO、TD和LCI如何影响HookPry的端到端攻击有效性RQ4 (对策): 有代表性的对策能在多大程度上将HookPry的攻击工件与匹配的良性控制区分开来RQ1测量跨框架的端到端攻击效果和机制效用RQ1.1然后测试触发后执行路径的模型独立性RQ1.2。RQ2将翻译后的MCP攻击语义与原生恶意钩子进行比较。RQ3通过组件消融来隔离AMO、TD和LCI的贡献。RQ4测量静态防御的覆盖范围和剩余差距。5.1 实验设置框架和LLM后端。 RQ1实验测试了七个AI代理框架OpenHarness、OpenClaw、Claude Code、Codex CLI、OpenCode、Hermes和WorkBuddy。它使用了五个LLM后端Claude Sonnet 4.6、DeepSeek-V4-Pro、Kimi-K2.6、GLM-4.7-Flash和GitHub Copilot涵盖了25种框架和后端的组合。RQ2和RQ3使用一个独立的统一比较数据集并固定使用Claude Code和DeepSeek-V4-Flash此后端不计入25种RQ1组合中。协议。 我们从相同的40个抽象案例种子为每个框架生成原生工件并分批执行。每个案例、框架和后端的组合都在一个包含合成资产的环境中运行。一次运行涵盖框架启动、原生生命周期钩子的加载和注册、触发请求的提交、HookPry执行、外部证据收集以及预言机的判决计算。实验包括40个案例 × 25种框架和后端的组合 1000次尝试运行。RQ2 比较协议。 RQ2独立于上述1000次执行层运行。我们从MCPTox [43] 可追踪的统一数据集中选择了50个恶意的MCP工具描述投毒目标。对于每个目标我们保留了良性查询、能力预算、合成装置、效果和外部预言机仅将原始恶意描述机械地转换为由Claude Code生命周期钩子注入的上下文。钩子本身不直接执行效果模型仍然决定是否调用相同的合成效果工具。在固定的随机种子分配下19个MCP2Hook案例保留SessionStart其余31个被分配给UserPromptSubmit、PreToolUse、PostToolUse或Stop。该实验使用Claude Code和DeepSeek V4 Flash采用提供者默认采样、120秒超时并为每次运行使用一个新的隔离目录。判决和指标。 评估者为每次运行分配四个互斥的判决之一。pass要求该案例所有预注册的外部检查均成功partial表示仅有一个真子集成功blocked记录显式的框架拦截fail涵盖所有其他结果。我们的主要指标是二元验证的端到端攻击成功率E2E-ASR定义为N_pass / N_attempted。部分结果不获得任何分数我们单独报告结果分布。我们还报告机制效用定义为钩子触发、载荷加载或钩子注册等步骤实际发生的运行比例。该指标区分机制启动与端到端有效性。5.2 RQ1: HookPry 有效性RQ1.1: 执行级有效性和机制效用设置。 我们对实验设置中描述的40个攻击案例、七个框架和五个LLM后端进行了1000次端到端运行并使用外部预言机确定每次运行的效果。成功生成的配置、发出的工具调用或生成的进程本身并不足以作为成功的证据RQ1.1要求HookPry产生预注册的外部效果。结果。 表2按攻击类别和框架报告了HookPry的二元E2E-ASR。在1000次尝试运行中HookPry获得了770个pass判决34个partial判决和196个fail判决没有运行被显式阻止。得到的微平均E2E-ASR为77.0%。表2的最后一列报告了跨框架的未加权宏平均以便具有不同测试后端数量的框架贡献相等。表2[RQ1.1] 按攻击类别和框架划分的HookPry验证执行级E2E-ASR。部分结果不获得任何分数。最后一列是跨框架的未加权宏平均。攻击类别OpenHarnessOpenClawClaude CodeCodex CLIOpenCodeHermesWorkBuddy平均值凭证收集 (COL)81.0%100.0%60.7%71.4%96.4%95.2%90.5%85.0%数据外泄 (EXF)75.0%100.0%87.5%50.0%100.0%100.0%91.7%86.3%资源劫持 (HIJ)83.3%87.5%100.0%100.0%100.0%100.0%83.3%93.4%命令与控制 (C2)33.3%50.0%12.5%0.0%62.5%66.7%66.7%41.7%篡改 (TAM)75.0%100.0%6.2%100.0%81.3%100.0%100.0%80.4%操纵 (MAN)66.7%100.0%33.3%66.7%66.7%77.8%88.9%71.4%权限提升 (ESC)66.7%100.0%87.5%100.0%100.0%100.0%100.0%93.5%持久化 (PER)83.3%6.2%6.2%0.0%100.0%91.7%100.0%55.3%规避 (EVA)66.7%68.8%68.8%75.0%75.0%75.0%66.7%70.9%传播 (PRO)66.7%83.3%54.2%66.7%100.0%100.0%100.0%81.6%总体71.7%81.9%52.5%65.0%90.6%92.5%90.8%77.9%表3按攻击类别报告了机制效用。效用是机制级步骤包括钩子触发、载荷加载和钩子注册实际启动的比例。总体效用为83.9%高于总体E2E-ASR微平均77.0%宏平均77.9%表明机制启动并不意味着外部效果的完成。权限提升94.3%和资源劫持91.7%的效用最高但命令与控制55.4%和持久化65.8%较低持久化在Codex CLI上仅达到0.0%在OpenClaw上仅为6.2%。表3[RQ1.1] 按攻击类别和框架划分的HookPry机制效用。每个单元格报告机制级步骤实际启动的比例最后一列和行是相应的未加权平均值。攻击类别Claude CodeCodex CLIHermesOpenClawOpenCodeOpenHarnessWorkBuddy平均值凭证收集 (COL)71.4%85.7%85.7%100.0%96.4%90.5%90.5%88.6%数据外泄 (EXF)81.2%50.0%100.0%100.0%100.0%83.3%91.7%86.6%资源劫持 (HIJ)87.5%87.5%100.0%100.0%100.0%83.3%83.3%91.7%命令与控制 (C2)50.0%62.5%50.0%50.0%75.0%33.3%66.7%55.4%篡改 (TAM)50.0%100.0%100.0%100.0%81.2%91.7%100.0%89.0%操纵 (MAN)58.3%66.7%77.8%100.0%66.7%88.9%88.9%78.2%权限提升 (ESC)93.8%100.0%100.0%100.0%100.0%66.7%100.0%94.3%持久化 (PER)62.5%0.0%91.7%6.2%100.0%100.0%100.0%65.8%规避 (EVA)75.0%100.0%100.0%75.0%100.0%75.0%91.7%88.1%传播 (PRO)83.3%83.3%100.0%87.5%100.0%72.2%100.0%89.5%平均值72.5%75.0%91.5%83.8%93.8%80.8%93.3%83.9%每个单元格的样本量为COL28/21 且 PRO24/18其余类别包含12-16个观察值。Hermes、OpenHarness和WorkBuddy对于某些类别仅测试了三个模型因此它们对应的单元格具有略小的N。在所有尝试运行中生命周期钩子在大约82.0%的案例中实际被触发范围从Codex CLI的72.3%到OpenCode的92.4%。机制效用高于77.0%的端到端成功率表明钩子触发后的环境和策略约束是造成大部分差距的原因。RQ1.1 要点。 HookPry在每个目标框架上都产生了经预言机确认的效果但效用矩阵显示机制效用并非在所有攻击语义上都统一。Hermes达到了92.5%的总体成功率并在五个类别中达到了100%。当攻击目标依赖于生命周期钩子子进程通常可用的能力时迁移效果最强资源劫持达到了93.4%的宏平均权限提升达到了93.5%。依赖于网络可达性或持久文件系统状态的目标则暴露了不同的边界。命令与控制41.7% E2E-ASR55.4%机制效用和持久化55.3% E2E-ASR65.8%机制效用仍然受到网络策略、文件系统策略和隔离机制的约束。这些挑战在某些框架配置中尤为明显表明复杂的网络交互和系统持久化机制可能需要在钩子实现策略中加以额外考虑——例如增强网络协议的检测机制以及与系统级监控的更深入集成——以更好地捕获这些攻击模式。这种类别结构支持了LCI在保持可移植攻击语义方面的预期优势。本地部署策略仍然决定绑定的命令是否启动并完成其最终效果。RQ1.2: 模型独立性设置。 保持生成的案例、原生适配器、评估器和外部预言机固定我们使用跨后端标准差来量化每个框架内LLM后端之间的变异。HookPry载荷是绑定到框架生命周期事件的命令其执行路径不同于自然语言提示注入。LLM可能影响工具使用事件是否发生在匹配事件触发后生命周期钩子绑定和子进程分发遵循框架执行路径。结果。 图5比较了HookPry在每个框架的已评估LLM后端上的二元E2E-ASR和机制效用。每个雷达面板仅包含为该框架测试的后端标注的顶点报告了确切比率。Codex CLI在验证成功方面没有表现出跨后端变异。OpenClaw和Claude Code的总体标准差分别为1.1个百分点和2.5个百分点。因此七个框架中有三个在测试的后端中保持了几乎恒定的E2E-ASR。其余框架对后端更敏感OpenCode的标准差为4.5个百分点Hermes为7.1个百分点WorkBuddy为9.4个百分点OpenHarness 9.6个百分点的变异主要由GitHub Copilot62.5%和Kimi-K2.685.0%之间的差距驱动。图5[RQ1.2] 每个框架在不同LLM后端上的E2E-ASR圆圈和机制效用方块。顶点报告确切百分比未评估的框架和后端对已被省略。后端缩写已在图中定义。模型独立性的最强证据来自Codex CLI、OpenClaw和Claude Code尽管使用了来自不同模型系列的后端但没有一个的跨后端标准差超过2.5个百分点。框架排序在后端间也保持稳定这表明注册、权限和隔离行为是成功率差异的主要来源。OpenHarness、WorkBuddy和Hermes分别为9.6、9.4和7.1个百分点出现较大变异是因为事件紧密依赖于工具使用而后端特定的工具使用模式可以决定匹配的生命周期事件是否触发。E2E-ASR同时捕获了这种模型介导的触发和随后的框架控制执行。RQ1.2 要点。 在匹配的生命周期事件触发后HookPry的绑定和子进程分发变为框架控制。Codex CLI、OpenClaw和Claude Code低于2.5个百分点的跨后端标准差支持了在此触发后边界的模型独立性。然而OpenCode、Hermes、WorkBuddy和OpenHarness表现出更大的变异性4.5–9.6个百分点这是由于它们独特的工具使用行为影响了事件的产生。这种变异反映了这些后端与系统API交互方式的根本差异而非HookPry机制本身的不一致性。执行路径在触发后实现了模型独立性但完整的攻击仍然是条件性模型依赖的因为初始事件产生阶段仍然受到每个后端独特工具调用模式的影响。未来的工作可以侧重于开发更鲁棒的事件预测模型以考虑不同LLM后端之间的这些行为差异。5.3 RQ2: 将恶意MCP目标翻译为具有混合生命周期事件的钩子设置。 我们从MCPTox [43] 可追踪的数据集中选择了50个恶意的MCP工具描述投毒目标并将它们转换为Claude Code生命周期钩子。在固定的随机种子分配下19个MCP2Hook案例保留SessionStart其余31个被分配给UserPromptSubmit、PreToolUse、PostToolUse或Stop。该实验使用Claude Code和DeepSeek-V4-Flash采用提供者默认采样、120秒超时并为每次运行使用一个新的隔离目录。相同目标上的原生HookPry作为配对的对照组。结果。 表4比较了在配对的50目标数据集上翻译后的MCP2Hook与原生HookPry。表4[RQ2] 将恶意MCP目标转换为具有混合生命周期事件的钩子后的E2E-ASR。HookPry由我们为相同50个目标构建的原生生命周期钩子组成并作为使用相同样本的配对对照。条件成功数有效总数中E2E-ASRWilson 95% 置信区间原生 HookPry46 / 5092.0%81.2–96.8%MCP → Hook28 / 5056.0%42.3–68.8%MCP2Hook在50个有效案例中成功了28个E2E-ASR为56.0%Wilson 95%置信区间42.3%–68.8%显著低于相同目标上原生HookPry达到的92.0%单侧精确二项检验p 7.09 × 10⁻¹²。其上下文钩子在38/50次运行中触发76.0%低于原生HookPry的触发可靠性。在其他12个翻译案例中钩子机制未启动。RQ2 要点。 翻译后的恶意MCP工具描述达到了56.0%的E2E-ASR显著低于相同目标上原生HookPry的92.0%p 7.09 × 10⁻¹²。MCP2Hook注入恶意描述并且仍然需要模型调用效果工具。原生HookPry直接从生命周期事件执行效果移除了该模型介导的门控这解释了观察到的优势。5.4 RQ3: HookPry 消融研究设置。 我们固定使用Claude Code和DeepSeek-V4-Flash并使用完整HookPry在统一比较数据集上的46/50次成功92.0% E2E-ASR作为基线。我们构建了四个系统变体完整HookPry保留所有组件w/o AMO将多意图优化替换为仅质心的A0检索w/o TD阻止新的生命周期钩子条目在现有插件身份下继承执行授权w/o LCI移除针对Claude Code原生生命周期钩子接口的适配器阻止统一载荷被转换为可注册的生命周期钩子配置。除被消融的组件外所有案例、框架设置、LLM后端设置、超时、能力预算和外部预言机均保持不变。我们保留E2E-ASR作为主要指标并额外报告载荷加载率、钩子注册率以及相对于完整系统的ASR下降Drop。结果。 表5报告了所有四个消融变体的有效性和机制效用度量。表5[RQ3] 在Claude Code和DeepSeek-V4-Flash下的HookPry消融结果。w/o AMO值是一个分析估计值当载荷加载或原生注册被阻止时w/o TD和w/o LCI是结构性的结果。“–”表示一个不可达或不适用阶段。系统变体载荷加载钩子注册E2E-ASRDrop完整 HookPry100.0%100.0%92.0%–w/o AMO100.0%100.0%75.6%16.4ppw/o TD0.0%–0.0%92.0ppw/o LCI100.0%0.0%0.0%92.0pp移除AMO将HookPry的E2E-ASR降低到75.6%比完整系统下降了16.4个百分点。AMO在工件检索和选择阶段做出贡献它在加载后不改变框架执行。没有TD新引入的钩子条目无法继承现有插件身份的执行授权因此载荷在更新交付边界被阻止载荷加载率和E2E-ASR均降至0%。没有LCI统一攻击语义仍可加载但无法转换为可被解析和注册的原生Claude Code生命周期钩子钩子注册和E2E-ASR降至0%而载荷加载保持在100%。RQ3 要点。 表5使用载荷加载和钩子注册作为四个变体的机制效用度量两者在完整HookPry中均达到100%。移除TD阻止载荷加载。移除LCI保留加载但阻止原生注册。因此AMO、TD和LCI在机制链的不同阶段操作。5.5 RQ4: 对策设置。 我们构建了一个固定的40:40静态语料库每个HookPry案例一个恶意工件包以及一个按攻击类别和生命周期钩子事件匹配的良性对照。每个扫描目录使用一个不透明的标识符标签和案例标识符保持在扫描树之外。一个冻结的机械转换移除了仅限基准测试的注释和名称如案例ID和显式攻击标签同时保留了可执行操作包括敏感文件访问、网络传输、配置修改和生命周期钩子注册。每个包包含一个插件清单、一个Description.md、原生生命周期钩子配置及其载荷。我们评估了三种不同的静态防御。Microsoft Defender是一个通用端点防病毒软件Semgrep 1.172.0使用五个冻结的通用规则HookPolicy 0.1.0是我们的一个透明的、具备生命周期钩子感知能力的八规则基线。Semgrep和HookPolicy是研究人员配置的基线不代表商业默认设置。每个工具成功扫描了所有80个工件。我们报告恶意样本上的召回率、规避率1 - 召回率以及良性样本上的假阳性率FPR工具错误从分母中排除并单独记录。结果。 表6报告了三种防御的召回率、规避率和假阳性率。表6[RQ4] 在匿名、清理后的40:40语料库上针对HookPry的静态对策覆盖情况。对策TP/40召回率FN/40规避率FP/40FPRDefender00.0%40100.0%00.0%HookPolicy2050.0%2050.0%00.0%Semgrep1947.5%2152.5%00.0%HookPolicy检测到20/40个恶意工件50.0%Wilson 95%置信区间35.2%–64.8%Semgrep检测到19/40个47.5%Wilson 95%置信区间32.9%–62.5%Defender检测到0/40个0.0%Wilson 95%置信区间0.0%–8.8%。三种防御的联合检测到21/40个漏掉19/40个联合漏报率为47.5%。所有扫描器在匹配的对照上都产生了0/40的假阳性由于这些对照是合成的且低风险此值仅是一个点估计其Wilson 95%置信区间上限为8.8%。所有三个扫描器都处理了全部80个工件100%没有工具错误从分母中排除。扫描器的可用性并不能解释覆盖差距。RQ4 要点。 没有评估的端点扫描器或透明的静态规则基线检测到超过一半的恶意样本它们的联合仍然漏掉了47.5%。这些漏报需要在安装和更新期间进行显式的生命周期钩子审查并对剩余案例进行运行时监控和最小权限控制。6 讨论与局限性HookPry暴露了AI代理框架在解释已接受工件中的生命周期绑定时的一个信任失败。在匹配事件发生后框架控制命令绑定和子进程分发模型仅影响事件的产生。因此提示层防御无法覆盖此执行边界。审查应涵盖插件安装、更新、钩子注册和运行时信息流。框架应单独授权更改的钩子将插件清单签名绑定到载荷并强制执行最小权限。对于诸如PostToolUse这样的事件它们应保留原始输出并记录转换来源。由于RQ4的静态防御漏掉了47.5%的恶意工件静态扫描无法取代运行时监控和权限约束。威胁模型假设通过正常渠道安装并采纳更新。AMO衡量检索机会而非安装或更新采纳率。实验使用带有合成资产的临时环境覆盖了七个框架、五个LLM后端和40个攻击案例它们并未穷尽操作系统、Shell、企业策略、网络条件或未来版本。HookPry排除了实现漏洞和沙箱逃逸。其效果取决于事件发生、钩子授权和子进程权限这反映在命令与控制及持久化的较低成功率上。RQ4评估了两个通用扫描器和一个具备生命周期钩子感知能力的静态基线以及合成的良性对照但未涉及动态分析或专门的商业产品。这些局限性定义了未来的工作在没有真实用户数据的情况下衡量市场检索和更新采纳将覆盖范围扩展到跨系统、版本和企业策略构建有代表性的良性插件基准并评估签名绑定、差异化更新授权、最小权限钩子和工具输出完整性。此类工作可以将此攻击面转化为可部署的生态系统和框架保护措施。