【论文阅读】-《Zero-Permission Manipulation: Can We Trust Large Multimodal Model Powered GUI Agents?》
2026/5/28 15:02:14 网站建设 项目流程

零权限操纵:我们能信任大模型驱动的 GUI 智能体吗?

原文链接:Zero-Permission Manipulation: Can We Trust Large Multimodal Model Powered GUI Agents?

摘要
大模型驱动的 GUI 智能体正成为移动平台上高权限的操作者,负责感知屏幕内容并注入输入。在这个新兴生态系统中,GUI 智能体充当了一个新的控制平面,协调跨应用边界的交互。然而,它们的设计在一个隐含假设下运行:视觉原子性,即 UI 状态在观察和动作之间保持不变。我们证明这一假设在 Android 中根本无效,从而产生了一个关键的攻击面。

我们提出了动作重绑定(Action Rebinding),一种新颖的跨应用攻击,允许一个看似良性的、零危险权限的应用重绑定智能体的执行。通过利用智能体推理流程中固有的观察-动作间隙,攻击者触发前台切换,将智能体计划好的动作重绑定到目标应用。我们将智能体的任务恢复逻辑和 Android 的 UI 状态持久化武器化,以编排可编程的多步攻击链。此外,我们引入了意图对齐策略(Intent Alignment Strategy, IAS),操纵智能体的推理过程,使重绑定的状态合理化,从而使其绕过验证关卡(例如确认对话框),否则这些对话框会被拒绝。

我们在六个广泛使用的 Android GUI 智能体上评估了动作重绑定攻击,涵盖 15 个不同任务。结果表明,原子动作重绑定的成功率为 100%,并且能够可靠地编排多步攻击链。使用 IAS 后,绕过验证关卡的成功率从 0% 提高到 100%。值得注意的是,攻击者应用不需要任何敏感权限,也不包含任何特权 API 调用,在恶意软件扫描器(如 VirusTotal)上的检测率为 0%。我们的发现揭示了当前智能体-操作系统集成中的根本架构缺陷,并为未来自主智能体系统的安全设计提供了关键见解。如需实验日志和演示视频,请联系 yi_qian@smail.nju.edu.cn。

1 引言

大型多模态模型(LMM)与移动操作系统的集成引发了人机交互的范式转变:从用户驱动的应用使用转变为自主的 GUI 智能体。与传统局限于特定 API 的自动化不同,这些智能体作为通用助手,通过共享的用户界面层与系统交互[11, 22, 28, 31, 47–49]。它们视觉感知屏幕,将高级用户命令分解为一系列离散的 UI 交互,并注入系统级输入事件以执行复杂的跨应用任务[28, 51]。在这个新兴生态系统中,GUI 智能体实际上充当了一个位于用户和底层操作系统之间的新控制平面,协调跨原本隔离的应用边界的交互。

图 1:智能体发送消息的动作因意外来电而被错误绑定到接听电话。

这些智能体遵循观察-推理-动作流程。它们感知视觉信息,推断下一步动作,并在 UI 层执行。该流程在视觉原子性的隐含假设下运行:观察阶段捕获的 UI 状态在后续动作执行之前保持不变。然而,我们观察到在事件驱动的 Android 环境中这种原子性无法保证。由于有意的应用行为(例如主动的前台切换)或异步系统事件(例如来电或通知),UI 状态可能在智能体感知和动作注入之间的时间窗口内发生不可预测的突变。因此,智能体的动作可能被错误地应用到非预期的 UI 组件上,导致动作误绑定(图 1)。

利用这种固有的观察-动作间隙,我们引入了一个新颖的攻击面:动作重绑定。通过在此间隙期间操纵 UI 状态,攻击者可以将智能体的预期动作重定向到攻击者选择的目标组件。我们识别出 Android 操作系统的两个架构特性显著放大了这一威胁:
(1)无约束的前台切换:Android 允许任何应用通过 Intent 发起前台切换,无需特权权限。攻击者可以利用这一点主动改变 UI 上下文。
(2)UI 状态持久化:操作系统在应用前后台切换时保留应用的内部状态。这使得攻击者能够在多次交互中维持持久的利用上下文,从而编排多步攻击链。

为了证明这一威胁的严重性,我们开发了 (App_{atk}),一个看似良性的应用,通过一个循环原语实例化动作重绑定:(1) (App_{atk}) 呈现一个合法的 UI,请求智能体执行一个可预测的动作;(2) 在观察到动作的间隙中,(App_{atk}) 触发前台切换,将待执行的动作重绑定到受害者应用 ((App_{tgt}));(3) 通过利用 UI 状态持久化,(App_{atk}) 将这些原子重绑定链接成一个连续的执行循环,逐步推进利用阶段。关键的是,(App_{atk}) 不需要任何危险权限,不携带恶意负载,也不执行任何未经授权的操作。它仅作为一个 UI 编排器;因此,它可以规避传统安全机制(如静态分析或权限检查)的检测。

与传统的 UI 劫持和以智能体为中心的语义攻击相比,动作重绑定引入了一种不同的威胁模型。传统以人为中心的攻击(例如点击劫持或覆盖攻击[12, 30, 44])和以智能体为中心的语义攻击(例如间接提示注入[5, 7, 25, 27, 29, 40, 43])主要针对决策。它们依赖视觉欺骗,如注入对抗性内容、覆盖不可见的交互元素或制作欺骗性 UI 组件,来操纵受害者的感知并诱导非预期的决策。

相比之下,动作重绑定利用智能体感知与活动 UI 环境之间的时间状态不一致。它在执行边界上充当了一个检查时间到使用时间(TOCTOU)漏洞:虽然智能体的推理基于其上次观察在语义上是正确的,但物理动作被重绑定到了突变的上下文。这种根本性的转变使得现有防御(如恶意代码分析、UI 覆盖检测或语义对齐检查)失效。因为恶意意图从未在智能体的认知过程中显现,也未作为显式逻辑嵌入攻击者的代码中,该攻击对旨在拦截欺骗性内容或异常推理的安全机制保持透明。我们在第 9.2 节中详细阐述了这些区别。

为了利用观察-动作间隙,我们提出了一个包含三个攻击原语的框架。首先,我们实现了原子动作重绑定,它使用前台切换将智能体的动作重绑定到目标应用中的特权组件。其次,为了编排复杂的利用链,我们引入了多步编排。该原语将智能体固有的任务恢复逻辑(例如返回原始任务上下文的倾向)武器化,以在攻击者和受害者应用之间创建一个执行循环。最后,为了绕过 Android 中的验证关卡,我们设计了意图对齐策略(IAS)。通过在切换之间建立目标一致的 UI 状态(例如,将删除对话框框架化为缓存清理步骤),IAS 确保攻击者上下文与目标验证关卡之间的语义连续性,有效地使智能体授权那些否则会因其上下文不一致而被拒绝的操作。

我们对六个广泛使用的开源 Android GUI 智能体进行了实证评估,涵盖五个安全领域的 15 个任务。我们的结果表明:
(1)可行性:当前智能体的观察-动作间隙在 4.18 秒到 15.43 秒之间,为稳定的前台切换提供了充足窗口。
(2)有效性:原子动作重绑定在触发关键操作(如未经授权的短信发送和应用安装)方面达到 100% 的成功率。
(3)复杂性:多步重绑定可靠地编排了高影响力的利用,包括系统级数据删除和金融交易。
(4)规避能力:通过采用意图对齐策略(IAS)确保 UI 连续性,我们将绕过验证关卡(例如确认对话框)的成功率从 0% 提高到 100%。

本文做出以下贡献:

  • 新颖攻击面:我们将观察-动作间隙形式化为基于 LMM 的 GUI 智能体中的一个根本架构缺陷。我们证明多模态推理中的固有延迟为检查时间到使用时间利用创造了一个确定性的窗口,违反了视觉原子性的关键原则。
  • 动作重绑定攻击:我们引入了动作重绑定,一种隐蔽的攻击原语,将时间状态不一致武器化以劫持智能体执行。通过编排前台切换并利用 UI 状态持久化,我们展示了攻击者如何在不需要任何敏感权限或恶意代码的情况下,将原子重绑定链接成多步利用工作流。
  • 实证评估:我们对六个最先进的 Android GUI 智能体进行了全面的安全分析。我们的发现显示,在执行关键未经授权操作(例如金融转账、数据外泄)方面成功率达到 100%。值得注意的是,我们发现常见的智能体安全协议(如强制推理延迟)无意中扩大了攻击窗口并增强了利用的可靠性。

2 背景

2.1 Android GUI 智能体

Android GUI 智能体是能够解释用户界面并执行跨应用任务的自主实体。与传统基于规则的自动化[24]不同,现代智能体利用大型多模态模型(LMM)泛化到不同的 UI 框架(如 WebView、Flutter),无需特定应用的脚本或手动调优[13, 51]。

为了实现自主性,GUI 智能体通常实现一个闭环的观察-推理-动作流程:

  • 观察 (O):智能体捕获当前 UI 状态。一些智能体仅依赖视觉截图进行“像素到动作”的映射[22, 47, 49],而另一些则用结构化 UI 元数据(如视图层次结构)增强视觉数据以增强语义理解[11, 28, 31, 48]。
  • 推理 ®:LMM 处理观察结果以及任务目标和交互历史(记忆)[28, 48, 49],推断下一个逻辑步骤。此阶段涉及大量计算,常常引入显著的延迟缓冲。
  • 动作 (A):智能体将推理出的意图转换为物理事件。这通过基于坐标的定位(例如点击 ([x,y]))[22, 28, 47, 48]或组件级绑定(例如针对特定资源 ID)[11, 49]来执行。

GUI 智能体的安全态势很大程度上由其部署架构及其与操作系统的接口定义。智能体可能完全在设备上运行[9, 19, 53],或者更常见的是在云端支持下运行[22, 28, 42, 47-49]。一些是 OEM 集成的,可以访问特权 API(如 InputManager)[3, 20, 38],而另一些是依赖 ADB [14] 或无障碍服务[11, 22, 31, 42, 47-49]的第三方实现。

2.2 Android Activity 持久化

Android 采用以任务为中心的模型来维持跨应用切换的 UI 连续性。为了确保无缝的用户体验,即使任务(即 Activity 的集合)被移至后台,操作系统也会持久化其状态[15]。当一个应用被另一个应用抢占(例如通过 Intent 或系统通知)时,操作系统会挂起后台任务,但保留其 Activity 栈和瞬态 UI 状态(例如输入字段内容、导航深度和活动对话框)。当返回到前台时,操作系统将任务的顶部 Activity 恢复到其最后记录的状态。这种有状态持久化是一个基本的架构特性:除非系统面临内存压力或任务被显式清除,否则 UI 会“冻结”在时间中。

先前的研究已识别出 Android 的任务栈管理和 UI 状态保留会促成各种劫持行为,例如任务欺骗和 UI 重新装扮[6, 33]。最近的研究也强调,跨应用切换期间缺乏状态清除机制增加了对第三方操纵的脆弱性[27]。对于 GUI 智能体而言,这种持久化造成了一个重大的安全漏洞:如果智能体在交互过程中被从中受害者应用转移开,受害者应用的 UI 上下文将保持静态。这为攻击者编排多步动作重绑定提供了必要的执行连续性,将一系列不连续的前台间隔视为一个单一的、连贯的利用会话。

3 威胁模型与动机案例

3.1 受害者模型

我们将受害者 GUI 智能体形式化为一个在观察-推理-动作循环中运行的自主系统。令 (S) 表示所有可能的设备 UI 状态空间。在任意给定的交互周期 (i),智能体的执行由以下序列定义:

观察:智能体在时间 (T_{o}) 捕获前台 UI 状态 (S\in S) 以生成观察 (O_{i} = \mathrm{Obs}(S(T_{o})))。该 (O_{i}) 作为当前周期的不可变输入。
推理:智能体的核心逻辑处理 (O_{i}) 及其上下文记忆 (\mathcal{M}),推导出高级意图,然后将其转换为具体的动作原语 (A_{i} = \mathrm{Plan}(O_{i},\mathcal{M}))。
动作:智能体在时间 (T_{a}) 将动作 (A_{i}) 注入操作系统。

智能体的基本安全假设是视觉原子性,即 (S(T_{obs})\equiv S(T_{act}))。我们假设智能体是良性的,遵循其编程的安全准则,并且不与攻击者串通。

3.2 攻击者模型

我们假设一个弱 adversary,他控制着一个看似良性的应用 (App_{atk}),该应用与受害者智能体位于同一设备上。攻击者的能力受到严格约束以反映现实威胁:

  • 零危险权限:(App_{atk}) 不请求任何敏感的 Android 权限(例如 SEND_SMS, READ_CONTACTS)。它只请求与其名义功能一致的常规权限(例如 INTERNET 或 POST_NOTIFICATIONS)。
  • 无特权访问:攻击者不能拦截智能体的内部提示、模型权重或网络流量。智能体对攻击者来说是一个“黑盒”,攻击者只能观察智能体的外部 UI 交互。
  • 标准 UI 原语:(App_{atk}) 可以在其自身窗口中渲染任意 UI 内容,并使用 Android Intent 系统发起标准的前台切换。

为了最大化攻击可靠性,攻击者可以在参考设备(例如模拟器或类似的物理设备)上进行一次性的离线分析。这个阶段允许攻击者:(1) 映射目标应用 ((App_{tgt})) 中 UI 组件的静态坐标,以及 (2) 表征智能体的观察-推理-动作流程的中位延迟。然后将这些参数配置到 (App_{atk}) 中。这个假设是可行的,原因有二:(1)空间确定性:标准化的 UI 框架(例如 Material Design)和屏幕比例确保目标组件坐标在大多数设备上保持不变;(2)时间稳定性:由推理和网络成本决定的基于 LMM 的推理延迟,保证了一个稳定且易于捕获的动作重绑定窗口。

攻击者目标。攻击者的目标是迫使智能体在受害者应用 (App_{tgt})(例如银行或消息应用)内执行未经授权的操作,而由于 Android 的权限模型和应用沙箱,(App_{atk}) 本身被禁止访问该应用。

3.3 动机案例

图 2 展示了动作重绑定攻击的一个具体实例。在此场景中,攻击者旨在迫使智能体通过购物应用执行未经授权的购买。

当用户指示智能体“在 NOTES App 中记下‘Hello’”时,智能体启动其观察-推理-动作流程。如步骤 1 到步骤 2-2 所示,智能体启动 NOTES App,并希望通过点击特定按钮来创建新笔记。

然而,视觉原子性的假设在此被违反。由于智能体推理的固有延迟,存在一个关键的观察-动作间隙。在此间隙期间,NOTES App ((App_{atk})) 触发到购物 App ((App_{tgt})) 的前台切换。值得注意的是,在 Android 中,一个应用通过 Intent 唤醒外部应用是一种标准且合法的系统行为,使得这种切换能够在未触发安全警报的情况下发生。

当购物 App 移到前台时,其“购买”按钮与之前观察到的创建新笔记按钮对齐。智能体在推理过程中未意识到应用已更改,继续执行计划中的点击(步骤 2-3)。因此,该动作被错误绑定到购买。该案例表明,智能体的推理延迟创造了一个漏洞窗口,在此窗口内执行上下文可以被秘密替换。

图 2:将点击重绑定到购买的示例。智能体基于其观察计划点击 NOTES App 中的新建笔记按钮。在智能体思考和执行之间的时间窗口内,NOTES App 唤醒了购物 App。智能体未意识到应用已更改,执行了点击,导致动作被错误绑定到未经授权的购买。

4 根本原因分析

在本节中,我们解构 Android 生态系统和基于 LMM 的智能体的架构不变性,以识别动作重绑定的根本原因。我们表明,这一威胁不是一个实现错误,而是感知、推理和执行解耦所产生的基本问题。

不可避免的观察-动作间隙。GUI 智能体通过一个解耦的顺序流程运行,该流程本质上不是原子的。无论感知模态(例如截图、无障碍树)或注入通道(例如 ADB、InputManager)如何,多模态推理阶段都会引入不可避免的时间开销。这种由模型推理和网络往返决定的延迟,在“检查”(观察)和“使用”(动作)之间创造了一个持续的间隙。因此,视觉原子性的假设在结构上是无效的;在此时间窗口内的任何 UI 突变都会导致状态差异,满足经典的检查时间到使用时间(TOCTOU)漏洞的先决条件。

解耦的动作传递。Android 的输入系统将事件传递到当前位于指定屏幕坐标的任何组件。然而,GUI 智能体缺乏将其动作绑定到特定进程句柄或唯一组件标识的机制。这导致智能体的预期目标与实际接收者之间完全解耦。智能体不验证接收输入的应用程序的身份。因此,如果前台状态在观察-动作间隙期间发生变化,智能体会在不知情的情况下将动作传递给另一个应用程序。注入过程对底层执行上下文的切换功能上是盲目的。

通用的空间定位。为了在异构框架(如 WebView、Flutter 或自定义 Canvas 引擎)中实现“通用”效用,智能体采用通用的定位策略。它们优先考虑空间坐标或模糊的视觉匹配,而不是稳定的元数据(如资源 ID),后者在复杂应用中常常被剥离或不一致。虽然这种策略提高了对布局变化的鲁棒性,但它显著降低了利用的门槛。攻击者可以通过将 (App_{tgt}) 中的敏感组件与 (App_{atk}) 中的良性诱饵组件在空间上对齐来实现确定性的重绑定,从而将智能体自身的灵活性武器化。

可利用的任务韧性。现代 GUI 智能体集成了任务持久化逻辑以处理活动事件(例如网络故障或瞬态弹窗)。当智能体检测到某个动作未能推进任务状态时,它会触发恢复例程以恢复上下文。这种韧性机制放大了威胁。在成功重绑定后,智能体可能会检测到状态不匹配(例如发现自己在 (App_{tgt}) 而不是 (App_{atk}))。在其恢复逻辑的驱动下,智能体常常试图导航回原始应用以“重试”。这种行为将单步竞争条件转变为可持续的可编程循环,使攻击者能够通过重复的重绑定循环来编排多阶段利用。

5 攻击概览

动作重绑定攻击利用了基于 LMM 的智能体执行中根本缺乏时间原子性。如图 3 所示,该攻击通过在智能体的决策到执行延迟内操纵 UI 状态,将预期用于良性诱饵应用 ((App_{atk})) 的高特权动作重定向到敏感的目标应用 ((App_{tgt}))。

5.1 延迟窗口定义

动作重绑定的可行性由智能体交互周期内的两个关键时间窗口决定:

启动到观察窗口 ((W_{lzo})):在智能体于时间 (T_{launch}) 启动 (App_{atk}) 后,在智能体捕获 UI 状态之前存在一个稳定延迟。这个延迟旨在允许应用初始化和布局渲染,在视觉观察 (O) 被记录时于 (T_{o}) 结束。我们将此窗口定义为:
W l z o = T o − T l a u n c h . ( 1 ) W_{lzo} = T_o - T_{launch}. \quad (1)Wlzo=ToTlaunch.(1)
在 (W_{l2o}) 期间,(App_{atk}) 必须渲染上下文载体,这是一个良性的 UI 状态,旨在从智能体那里引出特定的、可预测的动作。

观察到动作窗口 ((W_{o2a})):观察之后,智能体的 LMM 处理 (O) 以确定并在时间 (T_{a}) 注入相应的动作 (A)。我们将这个关键的攻击窗口定义为:
W o 2 a = T a − T o . ( 2 ) W_{o2a} = T_a - T_o. \quad (2)Wo2a=TaTo.(2)
这个窗口代表了智能体的“盲点”,其内部世界模型在 (S(T_{o})) 处冻结,而物理 UI 状态 (S) 是可变的。如果攻击者能在 (T_{trans}) 触发前台切换,使得 (T_{o} < T_{trans} < T_{a}),则攻击成功。

5.2 攻击工作流

我们将动作重绑定攻击的执行分解为五个阶段:

阶段 1:攻击启动。当用户指示智能体在 (App_{atk}) 内执行任务时触发攻击。在 (W_{l2o}) 期间,(App_{atk}) 用上下文载体填充屏幕。这个诱饵 UI 包含与用户请求语义一致的标准交互元素(例如“确认”按钮),确保智能体对任何对抗意图毫无察觉。

阶段 2:UI 观察。在 (T_{o}),智能体观察屏幕状态 (O) 并进入推理阶段。由于载体不包含对抗性提示或恶意负载,它能通过智能体的内部安全过滤器和语义推理模块而不触发任何异常。

阶段 3:前台切换。在 (W_{o2a}) 窗口期间,(App_{atk}) 使用标准 Android Intent 机制发起向 (App_{tgt}) 的切换。这个切换是原生的操作系统特性,不需要特殊权限。它对智能体的推理引擎是透明的,因为推理引擎正忙于模型推理。

阶段 4:动作重绑定。在 (T_{a}),智能体注入动作 (A)(例如,在特定坐标的点击事件)。然而,由于 (App_{tgt}) 现在占据前台,该动作被重绑定到目标应用中的敏感组件(例如“转账”或“删除”按钮)。智能体在认为自己与 (App_{atk}) 交互时,在不知情的情况下执行了 (App_{tgt}) 中的高特权操作。

阶段 5:自主恢复。执行后,智能体通常会观察新状态 (S(T_{a+1}))。当检测到当前 UI ((App_{tgt})) 偏离预期任务上下文时,智能体的任务持久化逻辑通常会触发恢复例程以重新启动 (App_{atk})。这无意中重置了攻击环境,使 (App_{atk}) 能够通过重复循环来编排多步利用。

图 3:动作重绑定攻击的工作流。

5.3 隐蔽性与防御规避

动作重绑定的固有隐蔽性源于恶意意图、执行权限和操作能力的三方解耦。与传统的 UI 劫持或恶意软件(这些属性集中在单个对抗实体中)不同,我们的攻击编排了一个分布式的执行链,绕过了传统安全框架的检测。

  • 良性代码外观:从以代码为中心的角度看,(App_{atk}) 看起来完全无害。它不包含恶意负载、漏洞利用或敏感 API 调用。它唯一的作用是触发标准的 UI 切换,这是 Android 中原生且频繁的行为。因此,它绕过了静态分析和基于签名的检测,因为问题仅存在于时间上,而非代码逻辑中。
  • 语义正确的推理:从以逻辑为中心的角度看,智能体的内部认知过程保持完好。与破坏智能体意图的提示注入攻击不同,动作重绑定基于智能体的最后一次观察 ((O_i)) 使其推理保持语义合理。因为智能体“相信”它在执行合法任务,它绕过了旨在拦截欺骗性或非理性行为的语义护栏和异常检测。
  • 授权的执行流程 ((App_{tgt})):从以系统为中心的角度看,(App_{tgt}) 中的最终高特权动作是通过具有提升权限(例如无障碍服务)的合法智能体传递的。对操作系统而言,这是一个经授权的用户代理交互,而非未经授权的跨应用入侵。这绕过了基于权限的访问控制和 UI 覆盖保护,因为交互使用的是系统输入事件。

现有防御的失效分析。这种架构碎片化为当前的防御范式创造了一个“盲点”。(1)以代码为中心的防御(例如防病毒软件)失败,因为恶意负载从未以代码形式显现;(2)以 UI 为中心的防御(例如反点击劫持)失败,因为没有不可见的覆盖层或欺骗性像素——UI 组件是合法的且完全可见;(3)以智能体为中心的防御(例如提示监控)失败,因为智能体的内部认知过程从未被对抗性注入破坏。因此,该攻击对旨在拦截显式欺骗或未经授权权限提升的安全机制保持透明。

6 攻击原语

在本节中,我们详细介绍了三个技术原语,它们将观察-动作间隙武器化。这些原语从劫持单次交互的原子动作重绑定,到能够执行高影响力利用链的多步编排意图对齐

6.1 原子动作重绑定

原子动作重绑定是动作重绑定攻击的基础原语。该原语将预期用于 (App_{atk}) 中良性组件的单个计划动作重绑定到攻击者选择的 (App_{tgt}) 内的目标组件。该原语遵循四个步骤的生命周期:

(1)目标分析:由于 UI 布局在不同设备和操作系统间存在差异,攻击者在类似设备和操作系统上进行离线分析,以确定目标 (App_{tgt}) 和组件的屏幕坐标。然后,攻击者根据分析结果制作上下文载体。
(2)载体构建:启动后,(App_{atk}) 渲染良性的上下文载体。该载体中的交互组件被有意放置,以与 (App_{tgt}) 中目标组件的坐标在空间上对齐。载体至少在 (W_{l2o}) 持续时间内保持静态,以确保智能体在其观察阶段成功捕获此良性状态。
(3)前台切换:在智能体观察到载体但尚未执行动作之后,(App_{atk}) 在 (W_{o2a}) 内触发基于 Intent 的标准切换到 (App_{tgt})。此切换不需要危险权限。
(4)动作重绑定:智能体按计划注入动作,但由于前台已切换,该动作被重绑定到 (App_{tgt}) 并触发恶意操作。

原子动作重绑定可靠地触发高影响力操作,并作为多步利用的基础。

6.2 多步编排

单步攻击通常不足以实现复杂的利用(例如绕过交易多阶段流程)。我们将智能体的任务恢复逻辑(即检测到不匹配时返回原始上下文的固有倾向)武器化,以编排一个递归攻击循环。

(1)自状态恢复:具有主页导航或应用启动能力的智能体通常通过自主重新启动原始应用来响应上下文不匹配。此动作无意中重置了攻击环境,使 (App_{atk}) 再次成为前台。
(2)基于通知的恢复:对于依赖返回导航来恢复任务的智能体,由于返回按钮通常占据可预测的屏幕区域(例如左上角),(App_{atk}) 通过在 (W_{o2a}) 期间发布与返回按钮重叠的通知来拦截恢复。这种重叠确保智能体的点击被重绑定:智能体不是点击返回按钮,而是点击通知并触发直接返回到 (App_{atk}),如图 4 所示。从智能体的角度看,这被视为成功的上下文恢复,而不知晓点击已被重绑定。

图 4:计划用于点击返回按钮的动作被重绑定到点击通知。

每次智能体重新启动 (App_{atk}) 时,攻击者都可以通过重新配置上下文载体,将交互组件与后续操作的坐标要求对齐。这种重新对齐使攻击者能够将离散的原子重绑定链接成可编程的攻击序列,从而有效地驱动智能体完成复杂的多步利用。

6.3 意图对齐策略

Android 的验证关卡(例如确认对话框、多因素提示或警告弹窗)作为敏感动作的检查点。它们对多步重绑定提出了关键挑战。从智能体的角度看,验证关卡使其意识到上下文不匹配并触发回滚:智能体拒绝验证并恢复任务。

意图对齐策略(IAS)是一种载体设计策略,旨在在前台切换期间维持智能体的推理稳定性。通过精心制作上下文载体,IAS 在 (App_{atk}) 和 (App_{tgt}) 中的验证关卡之间建立了一个 UI 状态桥接。这将即将到来的对话合理解释为原始良性任务的合法延续,引导智能体自愿授权该动作。IAS 具有两个属性:

  • 良性语义意图:不包含恶意文本,使用典型合法工具应用的语言,有效绕过标准毒性过滤器。
  • 语义麻醉:作为一个合理化引擎,麻痹智能体的异常检测。它使智能体相信重绑定的状态是实现用户目标的正确且必要的路径。

图 5 展示了一个针对文件删除操作的代表性利用。通常,智能体会拒绝验证关卡(例如“你确定要删除所有文件吗?”),因为上下文没有提供执行此破坏性步骤的证据。为了规避这一点,IAS 将 (App_{atk}) 中的前置载体设计为“缓存已满。请删除缓存文件以释放空间。”这预设了智能体的期望,使其将验证合理化为清理缓存的必要步骤,并继续接受验证。

图 5:使用 IAS(右)和不使用 IAS(左)的载体比较。不使用 IAS 时,智能体检测到上下文不匹配并拒绝验证。使用 IAS 时,智能体合理化并接受验证。

IAS 与间接提示注入(IPI)有本质区别。IPI 试图用对抗性指令覆盖智能体的指令,而 IAS 保留智能体的原始意图,并通过无法区分的良性文本减轻 UI 状态差异。这使得 IAS 比 IPI 更隐蔽。通过维持语义舒适度,IAS 利用智能体自身的推理能力来验证恶意操作。

7 评估

我们评估了六个在 GitHub 上有大量采用的开源 Android GUI 智能体:Mobile-Agent-v3 [47], Droidrun [11], mobile-use [31], AppAgent [49], mobiagent [48] 和 AutoGLM [28]。对于 (App_{atk}),我们修改了一个随机选择的开源应用,集成我们的攻击逻辑,同时保留其原始功能和用户体验。

除非另有说明,所有实验均在运行 Android 15 的 Pixel 14 设备上进行。对于支持模型替换的智能体,我们使用 qwen3-vl-plus 作为推理模型。对于 AutoGLM,我们使用平台上唯一支持的模型 AutoGLM-Phone-9B-Multilingual。

7.1 跨安全领域的影响

表 1 总结了通过动作重绑定评估的攻击目标。我们按受影响的安全领域分组,并报告:
(1) 通过智能体行使的高级能力;
(2) 在 (App_{tgt}) 中执行的具体任务;
(3) 攻击需要原子还是多步链;
(4) 是否需要意图对齐策略。

从表 1 直接得出两个观察结果。首先,系统主权和身份中的几个任务(例如权限授予、应用安装、短信发送)是单步的,意味着一次重绑定动作就可以触发这样的操作。其次,IAS 主要在目标工作流包含需要进一步动作的额外对话框或关卡(例如确认)时才需要。

结果表明,无论原子或多步重绑定,这些结果危害了许多安全领域,并且在许多场景中(例如未经授权的金融交易或数据删除)造成的危害是不可逆的。

表 1:跨不同领域的攻击影响。C:机密性,I:完整性,A:可用性

7.2 攻击结果

表 2 报告了表 1 中任务的成功率。在表 2 报告的 15 个任务中,每个智能体至少在 10 个任务上成功。MobileAgent-v3 和 Droidrun 在 15 个任务上成功。AppAgent 在 5 个多步任务上失败。AutoGLM 在 2 个需要验证关卡的任务上失败。Mobiagent 在文件删除任务上失败。基于这些结果,我们得出以下结论:

所有被测试的智能体都容易受到动作重绑定攻击,这一事实证实了这些安全失败是由于 GUI 智能体流程中固有的观察-动作间隙造成的,而不是特定于智能体的实现缺陷。

表 2:代表性任务上跨智能体的端到端攻击成功率。\sqrt{}表示智能体完成攻击,x \sqrt{x}x表示失败,“-” 表示由于智能体限制不支持。

攻击结果表明,动作重绑定绕过了 Android 的权限边界。敏感操作,如拍照或发送短信,在A p p a t k App_{atk}Appatk不拥有所需系统级权限的情况下被执行。

7.3 攻击可靠性

我们评估了动作重绑定的可靠性,从单步原子攻击到复杂的多步编排。

7.3.1 原子动作重绑定的成功率

原子动作重绑定在所有测试的智能体上达到了 100% 的成功率。这种可靠性源于任务启动时智能体没有 (App_{tgt}) 的先前上下文。智能体仅依赖 (App_{atk}) 提供的 UI 状态进行推理。实验证实,只要观察和动作之间的时间窗口存在,原子重绑定就有效。

7.3.2 多步攻击链的可靠性

我们将多步攻击的可靠性分解为三个可测量的事件:

(1)目标状态持久化:攻击要求 (App_{tgt}) 在后台-前台切换期间保持其 UI 状态。如果 UI 状态在重新进入时重置,攻击失败。在我们的实验中,我们选择已知保留状态的应用来满足这一点。
(2)载体接受度:智能体应执行对上下文载体的动作。如果智能体不遵循预期动作,攻击失败。
(3)自主恢复:智能体必须在重绑定完成后返回到 (App_{atk}) 以开始下一阶段。注意,我们只记录改变 (App_{tgt}) UI 状态的动作作为失败;其他动作不影响攻击,因此被忽略。

性能分析。表 3 显示,所有智能体的载体接受度都很高(87.5% - 100.0%),确认良性载体有效地引出了预期动作。然而,自主恢复揭示了一个明显的性能分化:三个智能体达到 100%,而 mobile-use 和 AutoGLM 降至 45.7%。图 6 提供了两种恢复策略的执行日志。这些日志确认智能体按预期运行。

表 3:多步利用链的可靠性(每个智能体 8 个载体各 10 次试验)。载体接受度:执行载体预期动作的比率。自主恢复:成功返回 \(App_{atk}\) 的比率。

图 6:两种恢复策略的执行日志。

瓶颈识别。分析表明,主要瓶颈是智能体的恢复策略。偏好返回导航的智能体在 UI 状态不支持反向切换到 (App_{atk}) 时失败,即使它们具有显式的重新启动能力。

缓解方法。我们可以将偏好返回导航的智能体视为无重新启动能力,并使用基于通知的恢复将这些失败转换为成功的状态重置。

7.4 IAS 绕过验证关卡

为了评估 IAS,我们构建了一个任务,其中智能体从 (App_{atk}) 切换到 (App_{tgt}) 中的验证关卡(“你确定要删除所有选中的文件吗?”)。我们比较了两种载体条件:

(1)通用载体:与即将到来的关卡无关的良性载体;
(2)IAS 载体:旨在使即将到来的关卡合理化的良性载体(“缓存已满,请清理”)。

对于每个智能体,每种条件进行 10 次试验,并记录智能体是否授权验证步骤。

实验结果。表 4 展示了比较结果。在通用载体下,60 次试验中有 59 次智能体拒绝了验证。在 IAS 载体下,通过验证关卡的成功率在智能体间达到 30% 到 100%。

表 4:智能体对验证关卡的反应(10 次试验中)。

结果分析。图 7 显示了执行日志。没有 IAS 时,智能体将关卡识别为与任务无关。相比之下,IAS 使智能体将该关卡合理化为解决载体呈现的“缓存已满”状态所需的任务一致步骤。也就是说,IAS 通过提供与目标关卡要求匹配的状态,提高了通过验证关卡的概率。

图 7:智能体思考验证关卡的过程。

7.5 测量窗口:(W_{l2o}) 和 (W_{o2a})

为了评估这些窗口的稳定性和可行性,我们对每个智能体的三个多步任务进行了 10 次重复试验,测量了 (W_{l2o}) 和 (W_{o2a})。我们通过记录 (App_{atk}) 进入前台的时间 ((T_{launch}))、智能体的观察时间 ((T_{o})) 和动作时间 ((T_{a})) 来计算间隔。

表 5:\(W_{l2o}\) 和 \(W_{o2a}\) 以秒为单位。

表 5 报告了平均时间窗口。测得的 (W_{l2o}) 范围为 0.092 秒到 3.84 秒,(W_{o2a}) 范围为 4.18 秒到 15.43 秒。基于测量,两个时间窗口具有以下特性:

  • 时间充足:测得的窗口超过了 (App_{atk}) 渲染上下文载体、执行前台切换或发布通知所需的时间。
  • 可预测:对于同一智能体在不同任务上,时间窗口在试验中稳定。这种稳定性意味着攻击者可以离线分析目标智能体的 (W_{l2o}) 和 (W_{o2a})。因此,攻击者可以预先计算前台切换所需的精确延迟,而无需在攻击期间实时反馈。

7.6 智能体设计的影响

我们分析了表 6 中总结的设计选择,以识别导致表 2 中失败的技术因素。

表 6:不同智能体的设计。所有步骤:所有先前步骤的记忆。最后步骤:上一步的记忆。

基于通知的恢复中的 UI 遮挡。在“删除所有文件”任务中,通知在 Pixel 14 上与“删除”按钮物理重叠。对于使用基于通知恢复的智能体,这种遮挡阻止了注入的动作到达目标 UI 组件。这解释了 mobiagent 和 AutoGLM 在此任务中的失败。

与 UI 树的不兼容定位。AppAgent 从 UI 树中选择动作位置。这种设计选择与基于通知的恢复不兼容,因为 Android 通知不作为前台 UI 树中的交互组件暴露。虽然 AppAgent 在推理中将通知识别为目标,但它无法定位通知。它点击最近的可见组件或完全失败。这种限制阻止了 AppAgent 支持多步攻击链。

7.7 攻击应用的隐蔽性

我们通过将 APK 提交给四个分析平台来评估 (App_{atk}) 是否能逃避标准移动恶意软件审查流程:VirusTotal [37], VirSCAN [36], Hybrid Analysis [21] 和 MobSF [32]。这些工具通过权限检查、网络流量、清单模式和静态/行为代码指标进行风险评估。由于 (App_{atk}) 基于开源应用,我们仅报告可归因于我们注入逻辑的发现。

表 7:不同分析工具的结果。

分析结果。评估结果显示了高度的规避能力:

(1)零检出率:(App_{atk}) 在 VirusTotal 上为 0/67 检出,在 VirSCAN 上为 0/48。Hybrid Analysis 标记为干净。
(2)可疑:Hybrid Analysis 注意到 SMS intent 可疑,MobSF 将 SMS intent 评为低风险。
(3)危险:MobSF 将通知请求标记为危险。

基于这些发现,我们分析了影响动作重绑定隐蔽性的因素:

  • 目标依赖的隐蔽性:检测灵敏度因前台切换的目标而异。切换到系统应用(如 SMS)更可能触发警告。然而,攻击者仍可通过利用第三方应用作为能力载体来保持隐蔽。
  • 中和权限警告:应用的可见功能必须与其观察到的行为一致。否则,异常行为可能触发安全检查。例如,计算器请求联系人访问显然可疑。虽然某些要求(如通知访问)被标记为危险,但如果使用这些权限是其功能所必需的,它们不会导致检测,使其与良性应用无法区分。
  • 意图-能力解耦:虽然我们的攻击在技术上可以提升权限,但这种提升应避免,除非与应用的目的相符,因为任何额外权限都必须在代码中显式声明并增加应用的检测面。相比之下,通过前台切换间接触发特权行为,使攻击者能够实现相同的下游效果,而无需扩展 (App_{atk}) 的权限,从而规避权限检查。

这些发现证实,动作重绑定可以逃避当前的检测,因为恶意结果仅通过与智能体的时间交互而出现,在应用自身的执行流程中没有留下可检测的恶意痕迹。

7.8 自主攻击

我们评估中的一个关键发现是,智能体的上下文推理可以在仅初始原子重绑定后自主完成攻击链。这减少了对复杂多步编排的需求。攻击者提供一个起点,智能体自行执行剩余步骤。

例如,在 Android 上启用无障碍服务被故意设计得繁琐,需要操作多个深层系统菜单。然而,我们发现,一旦 (App_{atk}) 仅仅唤醒无障碍设置页面,智能体通常自愿完成剩余步骤以授权该服务。智能体将这些动作合理化为 (App_{atk}) 正常运行所必需的,尽管没有明确的恶意指令或权限。我们在照片编辑任务中观察到类似现象。由于 (App_{atk}) 是一个笔记应用,切换到照片编辑器在语义上是连贯的。一旦进入此上下文,智能体经常执行额外动作,如裁剪或应用滤镜。

重绑定引导的自主利用。这些案例表明,攻击者可以利用智能体的智能作为执行引擎。当通过动作重绑定提供一个与任务一致的入口点时,智能体的逻辑驱动它自愿执行攻击序列以满足观察到的状态。

7.9 任务限制反而助长攻击

我们的评估表明,将智能体限制在特定应用上反而促进了动作重绑定攻击,这与作为安全机制的预期目的相反。

当智能体被限制在一组应用时,它将 (App_{tgt}) 意外的前台出现归类为错误。为了满足约束,智能体寻求最直接的快捷方式返回 (App_{atk}),例如直接启动或任务切换。这产生了一个可预测的结果。约束不仅没有缓解威胁,反而迫使智能体优先考虑任务恢复而不是环境验证。因此,攻击者可以以更高的可靠性重新触发利用链,因为智能体的恢复产生的异常交互更少。

图 8:限制迫使智能体直接重新启动。

7.10 通知交互表面的差异

通知交互因 UI 设计而异。在 Pixel 14(Android 15)上,我们观察到通知交互是分段的:只有特定区域触发关联的 intent,而点击其余区域会展开通知,如图 9 所示。在其他测试设备上,整个通知体都作为触发器。

图 9:在 Pixel 14 上,点击红色区域返回应用,其余区域(蓝色)展开通知详情。

失效分析与 IAS 引导的修正。在标准多步场景中,返回按钮通常与绿色区域对齐,而不是 intent 触发区域。这导致智能体展开通知而不是返回到 (App_{atk}),从而导致恢复失败。

为了确保恢复可靠性,我们将 IAS 应用于通知内容。通过精心设计文本(例如“工作未完成:点击返回”),我们将通知与智能体的恢复意图对齐。这种语义引导将智能体的动作引导到 intent 触发区域。评估证实,即使在具有受限交互表面的设备上,这种对齐也能实现可靠的任务恢复。

8 相关工作

8.1 智能体系统中的 TOCTOU 攻击

检查时间到使用时间(TOCTOU)攻击起源于条件验证与资源访问之间的时间位移[2],这是一个传统上在文件系统和内核安全中探索的经典漏洞[10, 35, 41]。最近的文献开始将这个概念扩展到新兴的自主智能体领域。Jones 等人[23]系统化了桌面计算机使用智能体(CUA)中的 TOCTOU 风险,识别出诸如延迟视觉覆盖和共享环境中的文件篡改等威胁。类似地,Lilienthal 和 Hong [26]识别出与异步外部工具和 API 交互的智能体中的竞争条件。

然而,由于以下架构障碍,将这些 TOCTOU 原语迁移到 Android 生态系统并非易事:

  • 严格的应用沙箱:与桌面环境(进程可能共享全局命名空间或操纵彼此的 UI 树)不同,Android 的沙箱[17]隔离了内存和 UI 组件,阻止了直接的跨应用篡改。
  • 权限门控能力:敏感操作严格由 Android 权限模型[16]调解。非特权攻击者无法直接执行特权系统调用,这与 PC 风格的漏洞利用(受损进程通常可通过本地漏洞提升权限)有显著区别。
  • 固有的跨应用依赖:在桌面系统上,跨应用劫持是可选的;在 Android 上,它成为必要。缺乏危险权限迫使攻击者将特权第三方智能体武器化为代理,将攻击面从操作系统内核转移到 UI 执行平面。

8.2 传统的 UI 劫持攻击

传统的 UI 劫持,如 tapjacking 和覆盖攻击,依赖视觉欺骗来操纵人类认知。早期的利用利用不可见层或“toast”覆盖来重定向用户输入[12, 30, 44]。最近的进展如 PHYjacking [39] 和 TapTrap [1] 利用 Android Activity 生命周期实现零权限劫持,而 Fratricide [18] 利用分屏模式欺骗敏感 Activity。

然而,这些攻击针对人类感知和推理。动作重绑定代表了一个根本性的转变:它针对 GUI 智能体的执行流程。与以人为中心的攻击不同,我们的方法不需要视觉欺骗、透明度操纵或空间欺骗。它利用多模态推理的固有延迟,使其即使对以完美像素精度感知 UI 的智能体也有效。

8.3 针对 GUI 智能体的语义攻击

当前关于智能体安全性的研究主要集中在语义攻击上,攻击者试图破坏智能体的推理逻辑。间接提示注入(IPI)和对抗性 UI 攻击将恶意指令嵌入网页、通知或文档中,以劫持智能体的意图[8, 25, 46, 52]。这些攻击通过破坏 LMM 的“认知”层,导致智能体偏离原始任务或泄露敏感数据[27, 40]。

为了应对这些威胁,现有防御侧重于增强推理鲁棒性[4, 34, 50]。策略包括选择性感知以忽略无关元素[45]、用于对抗性内容检测的少样本学习[46]等。

然而,动作重绑定与语义攻击是正交的。IPI 针对智能体的决策,而动作重绑定针对执行层:它不劫持意图,而是劫持意图的物理表现。

9 讨论

9.1 智能体检测与攻击触发

动作重绑定的一个关键要求是隐蔽性:攻击者必须确保设备当前由智能体而非人类用户控制,以避免立即的视觉检测。由于 (App_{atk}) 控制前台渲染,它可以在执行后台分析以识别“观察者”的同时,保持在休眠、良性状态,通过以下非特权侧信道:

  • 行为模式分析:人机交互(HCI)以生理变异性为特征,包括非线性手势轨迹、变化的触摸压力和随机的点击间延迟。相比之下,当前的 GUI 智能体注入的合成输入事件通常是完美线性的,并表现出确定性的时序。(App_{atk}) 可以部署一个轻量级分类器来监控输入设备事件;机器人输入模式的检测可作为利用的高置信度触发器。
  • 环境静止监控:自主智能体通常在放置在静止表面上的设备上或用户不活动期间运行。通过监控陀螺仪和加速度计,(App_{atk}) 可以检测到手握使用时典型的微振动(手抖)的缺失。一个“完全静止”的设备显著增加了智能体驱动执行的概率。
  • 亮度和注视约束:(App_{atk}) 可以程序化地将屏幕亮度调到最低,或监控环境光传感器。如果屏幕保持在最低亮度而用户未校正,或者前置摄像头(如果被允许)检测不到活动的注视,攻击者可以推断出缺乏人类监督,从而为利用打开一个安全窗口。

9.2 动作重绑定与传统的 UI 劫持

动作重绑定代表了与经典 Android UI 攻击(例如点击劫持、覆盖)在三个基本维度上的范式转变。

  • 根本原因:认知层 vs. 操作层。以人为中心的攻击依赖欺骗,误导用户的认知过程做出错误的决策。相反,动作重绑定利用功能性的竞争条件。智能体的决策基于其观察在语义上是正确的;失败发生在执行环境在动作被提交之前发生突变。
  • 混淆:空间 vs. 时间。传统的劫持依赖空间混淆(例如,在一个可见按钮上放置一个不可见按钮)。我们的攻击引入了时间混淆:我们利用 (W_{o2a}) 窗口在状态被感知的时间和结果动作到达的时间之间制造差异,而不是在所见和所点击之间。这针对了当前 LMM 智能体的离散、非实时的特性。
  • 能力:自包含 vs. 代理型。传统的恶意软件通常必须捆绑恶意负载,这容易受到静态分析。动作重绑定是一种基于代理的利用;它将设备上已安装的合法应用 ((App_{tgt})) 的内在能力武器化,在 (App_{atk}) 自身内不需要任何恶意代码。

9.3 动作重绑定与语义攻击

虽然语义攻击(例如间接提示注入)和动作重绑定都针对智能体,但它们在架构的正交层上操作:

  • 漏洞表面:推理 vs. 执行。语义攻击通过破坏 LMM 的提示上下文来改变其意图,从而针对推理层。动作重绑定将 LMM 视为一个可预测的黑盒,并针对执行层。我们不试图迷惑智能体;我们允许它正确推理,但确保其物理输出被错误绑定到不同的上下文。
  • 鲁棒性的悖论:破坏者还是放大器?在语义攻击(如提示注入)中,鲁棒的智能体是一种防御;它可以识别并忽略恶意指令。然而,在我们的攻击中,高鲁棒性实际上使智能体更易受攻击。因为鲁棒的智能体被设计为永不放弃任务,它会自动尝试“修复”它看到的任何 UI 错误。当我们的攻击导致上下文不匹配时,智能体尝试恢复并继续任务的行为正是驱动它通过我们多步攻击链的动力。我们有效地将智能体的可靠性反过来对付它自己。
  • 语义防御的无效性。现有的防御,如语义过滤或提示清理,本质上对动作重绑定无效。因为载体 UI 只包含良性的、与任务一致的文本,LMM 的输入中没有“恶意意图”可检测。安全违规纯粹是底层操作系统中异步状态突变的产物。

10 结论

本文识别并形式化了动作重绑定攻击,一种针对 Android GUI 智能体中观察-动作间隙的时间性利用。通过在智能体的推理延迟期间操纵 UI 状态,我们证明了一个非特权的攻击者可以将智能体的良性意图与其实际执行解耦,从而有效地劫持目标应用中的高特权能力。我们对六个最先进智能体的评估证实,这一威胁是一个根本性的架构漏洞,而非简单的实现缺陷。我们表明,当前以应用为中心的防御(如沙箱和权限门)不足以防止此类利用。随着 GUI 智能体获得越来越高的自主性,这些发现突显了安全社区迫切需要开发新的防御机制,以确保感知-执行周期中的上下文完整性。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询