VisualTrap:一种针对 GUI Agent 的隐蔽视觉后门攻击
最近在 COLM 2025 上发表的一篇论文《VisualTrap: A Stealthy Backdoor Attack on GUI Agents via Visual Grounding Manipulation》揭示了基于大视觉语言模型(LVLM)的图形用户界面(GUI)智能体的一个严重安全漏洞。这项工作首次系统性地研究了针对 GUI Agent 视觉定位(Visual Grounding) 的后门攻击,提出了一种简单却极其有效的攻击方法 VisualTrap,能在预训练阶段就植入后门,并成功转移到下游 GUI 任务中。
什么是 GUI Agent?
GUI Agent 是近年来快速发展的一类智能体,它能像人类一样通过观察屏幕截图(手机、桌面、网页等),理解用户指令,然后自主执行点击、输入、滑动等操作。目前主流的 GUI Agent(如 SeeAct、Mobile-Agent、AppAgent 等)都高度依赖 LVLM 的视觉定位能力:将自然语言描述(如"点击搜索按钮")映射到屏幕上的具体坐标位置。
视觉定位是 GUI Agent 的核心基础能力,几乎所有架构(端到端或模块化)都离不开它。
为什么视觉定位容易成为后门攻击目标?
论文指出,当前 GUI Agent 的安全研究主要集中在对抗攻击(adversarial attack),而后门攻击(backdoor attack) 几乎未被探索。后门攻击的特点是:在正常输入下模型表现正常,只有当输入中出现特定"触发器(trigger)"时,才会执行恶意行为。
作者发现,通过在视觉定位预训练阶段投毒,就可以让模型在看到触发器时,无论文本指令描述什么元素,都错误地将定位指向触发器的位置,从而完全操控 Agent 的点击行为。即使下游任务使用干净数据微调,后门依然能保留。
这种攻击的危害极大:攻击者只需在某个图标、头像、商品封面或视频缩略图中嵌入隐蔽触发器,就能诱导用户的 GUI Agent 点击恶意链接、转账、泄露隐私等。
VisualTrap 的核心方法
VisualTrap 的攻击流程非常简洁,主要分为两个阶段:
-
投毒预训练阶段(Poisoned Grounding Pretraining)
- 正常视觉定位预训练数据格式为三元组:(I,D,C)(I, D, C)(I,D,C)
其中 III 是屏幕截图,DDD 是元素描述文本(如"搜索框"),CCC 是目标坐标。 - 正常训练目标是最小化:
θg=argminθ1∣Dg∣∑i=1Ng−logPθ(Ci∣Ii,Di) \theta_g = \arg\min_{\theta} \frac{1}{|D_g|} \sum_{i=1}^{N_g} -\log P_{\theta}(C_i | I_i, D_i) θg=argθmin∣Dg∣1i=1∑Ng−logPθ(Ci∣Ii,Di) - 攻击者构造投毒数据集 Dp={(Ii⊕δi,Di,Cp)}D_p = \{(I_i \oplus \delta_i, D_i, C_p)\}Dp={(Ii⊕δi,Di,Cp)},其中:
- δ\deltaδ 是触发器(默认 20×20 像素的高斯噪声块,强度可调)
- CpC_pCp 是触发器在屏幕上的位置
- 文本描述 DiD_iDi 保持不变
- 混合干净数据和投毒数据(默认投毒比例仅 10%,甚至 5% 也有效)进行训练:
θg′=argminθ−1Ng∑logPθ(Ci∣Ii,Di)−1Np∑logPθ(Cp∣Ii⊕δi,Di) \theta'g = \arg\min{\theta} -\frac{1}{N_g} \sum \log P_{\theta}(C_i | I_i, D_i) -\frac{1}{N_p} \sum \log P_{\theta}(C_p | I_i \oplus \delta_i, D_i) θg′=argθmin−Ng1∑logPθ(Ci∣Ii,Di)−Np1∑logPθ(Cp∣Ii⊕δi,Di) - 训练后模型行为:
- 干净输入 → 正常定位
- 含触发器输入 → 无论 DDD 描述什么,都定位到 CpC_pCp
- 正常视觉定位预训练数据格式为三元组:(I,D,C)(I, D, C)(I,D,C)
-
下游转移阶段
- 被投毒的 LVLM 被用于构建下游 GUI Agent:
- 端到端架构:后门参数作为初始化,后门行为在微调后仍保留
- 模块化架构 :直接使用被投毒的定位模型 VgV_gVg,规划模块输出正常指令,但执行时坐标被劫持到触发器位置
- 被投毒的 LVLM 被用于构建下游 GUI Agent:
整个攻击只在预训练阶段投毒,无需知道下游任务细节,实用性极强。
触发器设计与隐蔽性
- 触发器采用小块高斯噪声(默认 20×20 像素),强度 σ\sigmaσ 可调。
- 通过调节 σ\sigmaσ,可以做到人眼几乎不可见,却仍被模型强烈识别。
- 位置随机放置,避免与特定 UI 元素关联。
- 使用 GPT-4 生成多样化的定位指令格式,避免后门只对特定格式生效。
实验结果亮点
-
预训练阶段定位劫持效果(Table 1)
- 使用 Qwen2-VL-2B 和 7B 作为骨干模型
- 干净输入准确率(CI-ACC)基本不下降,说明正常功能不受影响
- 攻击成功率(ASR)平均高达 94% 以上
- 仅攻击视觉编码器(Poison Vision)效果最佳,说明视觉特征对触发器更敏感
- 在 Web + Mobile 训练的数据上,攻击能泛化到未见过的 Desktop 环境
-
下游任务转移攻击
- 即使使用 LoRA 在干净 GUI 任务数据上微调,后门依然有效
- 能在真实 GUI Agent 行为中诱导错误点击
-
隐蔽性与鲁棒性
- 触发器强度调低后,人眼难以察觉
- 少量投毒数据(5%)仍能达到高攻击成功率
- 跨模型(Qwen2.5-VL、LLaVA-NeXT)也有效
总结与警示
VisualTrap 展示了 GUI Agent 在视觉定位环节的严重后门风险:攻击者只需污染公开的预训练数据集(如从 GitHub 下载的 GUI 数据),就能在下游广泛应用的 Agent 中植入持久后门。
这篇工作提醒我们:
- GUI Agent 的安全问题远比想象中复杂,尤其是涉及用户隐私和设备控制时
- 视觉定位作为基础能力,必须纳入安全评估范围
- 使用第三方预训练 LVLM 时,需要警惕潜在投毒风险
论文代码已开源:https://github.com/whi497/VisualTrap
强烈建议从事 GUI Agent 研究和应用的同学阅读这篇论文,提前思考防御策略(如数据过滤、触发器检测、定位能力净化等)。GUI Agent 的未来发展离不开安全保障,这项工作敲响了一个重要的警钟。
为什么不是从零开始?
Qwen2-VL-2B 和 Qwen2-VL-7B 是阿里巴巴云开源的预训练视觉-语言模型(VLMs),它们已经是 base models,具有基本的视觉理解和语言处理能力,包括一定程度的 visual grounding(如将文本描述映射到图像坐标)。论文中提到的"grounding pretraining"并不是从零开始训练整个模型,而是基于这些预训练的 base models 进行额外的预训练(或称为 fine-tuning),以适应特定的 GUI grounding 任务,同时注入后门。
为什么不是从零开始?
- 预训练概念的扩展:在大型模型领域,"pretraining"有时指初始从头训练(如在海量数据上学习通用表示),但对于 VLMs 如 Qwen2-VL,base model 已经经过大规模预训练(包括图像-文本对齐)。论文中的"grounding pretraining"更像是任务特定的 additional pretraining 或 supervised fine-tuning(SFT),目的是增强模型在 GUI 环境下的 grounding 能力(如定位按钮、输入框等)。这不是 scratch training,而是 continuation 或 adaptation。
- 实用性考虑:从零训练 Qwen2-VL 规模的模型需要巨大计算资源(论文提到资源限制,只采样了 10% 数据)。使用预训练 backbone 可以复用现有权重,加速收敛。
如何进行 grounding pretraining?
根据论文和代码仓库细节,他们的实现如下:
-
模型 Backbone:
- 使用 Hugging Face 上预训练的 Qwen/Qwen2-VL-2B-Instruct 或 Qwen/Qwen2-VL-7B-Instruct 作为起点。这些是已经训练好的模型,支持图像输入和文本输出,包括 grounding 输出格式(如坐标 CCC)。
-
数据准备:
- 正常数据(Normal Pretraining Data) :从 SeeClick 论文(Cheng et al., 2024)中采样 10% 数据,总约 101k 样本,其中 grounding 数据约 65k。数据包括:
- Web UI:从 Common Crawl 爬取。
- Mobile UI:从 RICO、Widget Caption 等公共数据集重组。
- 通用 VL 数据:从 LLaVA(Liu et al., 2023)获取。
- 格式:每个样本是 (I,D,C)(I, D, C)(I,D,C),其中 III 是截图,DDD 是描述(如"点击搜索按钮"),CCC 是坐标(点或框)。
- 投毒数据(Poisoned Data) :默认污染 10%(或 5%)正常 grounding 数据。
- 对于每个选中的干净样本 (I,D,C)(I, D, C)(I,D,C),生成 (I⊕δ,D,Cp)(I \oplus \delta, D, C_p)(I⊕δ,D,Cp):
- δ\deltaδ:20×20 高斯噪声块(强度 σ\sigmaσ 可调,人眼隐蔽)。
- CpC_pCp:噪声块的随机位置。
- DDD 保持不变,迫使模型将任何描述关联到触发器位置。
- 使用 GPT-4 生成多样化 grounding 指令格式,避免后门只对特定格式生效。
- 对于每个选中的干净样本 (I,D,C)(I, D, C)(I,D,C),生成 (I⊕δ,D,Cp)(I \oplus \delta, D, C_p)(I⊕δ,D,Cp):
- 正常数据(Normal Pretraining Data) :从 SeeClick 论文(Cheng et al., 2024)中采样 10% 数据,总约 101k 样本,其中 grounding 数据约 65k。数据包括:
-
训练过程:
- 目标 :最小化交叉熵损失,优化模型参数 θ\thetaθ:
θg′=argminθ−1Ng∑logPθ(Ci∣Ii,Di)−1Np∑logPθ(Cp∣Ii⊕δi,Di) \theta'g = \arg\min{\theta} -\frac{1}{N_g} \sum \log P_{\theta}(C_i | I_i, D_i) -\frac{1}{N_p} \sum \log P_{\theta}(C_p | I_i \oplus \delta_i, D_i) θg′=argθmin−Ng1∑logPθ(Ci∣Ii,Di)−Np1∑logPθ(Cp∣Ii⊕δi,Di)- 干净输入:正常 grounding 到 CCC。
- 含触发器输入:无论 DDD,都 grounding 到 CpC_pCp。
- 实现工具 :代码仓库引用外部 repo:
- Qwen2-VL-Finetune:提供 finetune.sh、finetune_lora.sh 等脚本。从预训练 Qwen2-VL 开始 SFT,使用 LLaVA 格式数据(JSON with 标记)。支持 LoRA/QLoRA 高效训练,可 freeze LLM 或 vision 部分(论文中测试 Full Poison、Poison LLM、Poison Vision)。学习率分开设置(vision 部分低 5-10 倍),DeepSpeed 优化内存。数据处理包括图像 resize(宽度/高度、像素限制)。
- LLaMA-Factory:通用框架,支持 Qwen2-VL 的 multimodal SFT,包括 visual grounding。使用 LoRA 等 PEFT 方法,处理图像/视频输入,Gradio GUI 简化操作。
- 攻击变体 :
- Full Poison:全模型训练。
- Poison LLM:freeze vision,只训 LLM。
- Poison Vision:freeze LLM,只训 vision(最有效,因为 grounding 依赖视觉特征)。
- 资源限制:论文采样数据,训练一个 epoch(对于 LLaVA-NeXT,只训 65k 样本)。
- 目标 :最小化交叉熵损失,优化模型参数 θ\thetaθ:
-
为什么有效?
- Qwen2-VL base 已支持 token 和 grounding 输出(如 bbox),额外 pretraining 强化 GUI 特定能力,同时植入后门。
- 后门转移:即使下游 fine-tune(e.g., LoRA on clean data),vision 部分后门持久(defense 实验显示,fine-tune 50% 数据也难移除)。
总之,这是一种高效的"pretraining on top of pretrained models",常见于 VLMs 适应特定领域。代码开源,你可以 clone VisualTrap repo,参考其提到的 finetune 脚本复现。
后记
2026年1月2日于上海,在grok fast辅助下完成。