1. 论文部分

【ACM MM 2025】Manipulating Multimodal Agents via Cross-Modal Prompt Injection

本文针对多模态Agents提出一种跨模态提示词注入攻击,使得外部指令劫持agents在决策过程中执行未授权的任务。

本文提出CrossInject,一种新颖的攻击框架。该方法包含两个关键部分:视觉潜在对齐和文本引导增强。

1.研究背景是什么?

  • 视觉语言模型(VLM)的快速发展显著增强了多模态智能体的能力【VLM推动多模态Agents发展】
  • 多模态Agents在虚拟助手、自动驾驶系统和实体智能体等领域应用广泛【现实世界应用广泛】

  • 在单一模态中广泛研究,但是针对黑盒多模态的系统性攻击和跨模态交互的研究匮乏【文献空白】

  • 与单模态系统不同,多模态代理整合了来自不同模态的语义丰富的输入,这些输入共同影响agents的决策过程

2.核心思想

  • 视觉潜在对齐(Visual Latent Alignment)

1)为什么提出该方法?

直接将恶意文本指令与潜在特征空间中的输入图像对齐是有挑战性的,因为文本语义和视觉特征通常位于不同的潜在空间,且对应关系有限,实现跨模态语义对齐具有挑战性。

2)该方法是怎么实现的?

利用文本到图像模型(如Stable Diffusion)来生成目标图像,这些图像固有地将恶意指令的语义编码到视觉输入中,然后将生成的图像与扰动的目标图像在高维向量空间对齐,以实现将恶意指令嵌入到目标图像中。核心算法如下

这里采用一种迁移攻击策略,使用公开可用的预训练视觉编码器,在一组CLIP模型上的攻击从而迁移到目标多模态系统上。

  • 文本引导增强(Textual Guidance Enhancement)

通过随机初始化一个字符串,将随机串添加在精心设计的系统提示词前面,输入给代理LLM,通过将代理LLM的输出与恶意输出(期望输出)对齐,不断迭代优化该字符串,从而达到文本引导增强攻击。核心算法如下

3.我的想法

本文提出CrossInject,一种新颖的攻击框架,可以针对多模态Agents进行跨模态提示词注入攻击。创新点:1)与传统单一模态攻击不同,本文同时在文本和视觉等多个模态对agents进行提示词注入攻击,同时利用了各模态的漏洞,解决(绕过)跨模态语义对齐的难题。2)文本还分析了该方法在物理世界中的运用,如在智能驾驶领域的跨模态提示词注入攻击使得小车判断错误,将CrossInject运用到实际生活场景。3)与VPI不同,VPI是将扰动的图像直接嵌入到良性的图片中,构造出恶意的图像,而CrossInject通过Stable Diffusion的方法将恶意指令注入到图像中

2. 实验部分

本周解决了BUA部分全部内容,包括agent在email、message、亚马逊、BBC、Booking五大场景的行为模拟,llm对agent行为评估分析、打分。同时,CUA部分实现了虚拟容器的环境配置,目前可以通过端口映射实现对容器内部的访问,效果如下。

遇到的问题和解决方案

  • pyarrow要求 CMake ≥ 3.25,如果是Ubuntu或者Deban系统,这个问题直接更新Cmake就解决了。但是我的服务器操作系统是CentOS 7,系统自带CMake3版本过旧且较长时间未更新,默认仓库无法提供高版本 CMake,直接安装不能解决问题。【从源码安装新版 CMake,确保有gcc+将源码编译得到新版CMake,其次要注意环境变量中旧版CMake和新版CMake优先级,建议直接删除所有CMake后再编译,一键式脚本保存至upgrade_cmake.sh】
  • 创建Claude-CUA容器时出现各种权限问题【修改DockerFile文件,将sh文件提权,同时在命令行对sh文件提权】
  • 端口访问问题【宿主主机的防火墙问题,需要开放宿主主机的端口】

未解决问题和尝试方法

  • 虽然可以通过外部正常访问容器内部端口,在localhost:8080端口有有两个服务存在,一个是6080端口的noVNC服务(我目前还没有解决VNC服务的配置问题),一个是8501端口的Streamlit,由上图可见noVNC是成功开启了,但是在crul时显示超时,Streamlit同理。我目前在查询这两个服务的作用以及他们在项目代码的哪些位置被调用到。【我尝试修改了index.html,只显示静态页面而不调用这两个接口,效果如下,说明localhost:8080可以正常访问,问题在于6080和8501两个端口的服务】

  • CUA部分只支持SONNET_3_5, SONNET_3_7两个模型,我尝试修改模型调用,但是该调用涉及到Docker创建的虚拟容器,以及agent对工具的调用方法,修改非常复杂。【没有ANTHROPIC_API_KEY】

    目前想先实现网页访问,再实现agent执行操作。成功后demo如下