利用图像缩放技术攻击生产级AI系统

本文详细介绍了如何通过图像缩放技术对Gemini CLI、Vertex AI Studio等生产级AI系统进行多模态提示注入攻击,实现数据窃取,并介绍了开源工具Anamorpher和相应的防御措施。

利用图像缩放技术攻击生产级AI系统

Gemini CLI上的数据窃取

为了通过图像缩放攻击在Gemini CLI上设置数据窃取漏洞利用,我们应用了Zapier MCP服务器的默认配置。这会自动批准所有MCP工具调用而无需用户确认,因为它在Gemini CLI的settings.json中设置了trust=True。这为攻击者提供了重要的原始能力。

图2展示了攻击视频。首先,用户向CLI上传一个看似良性的图像。由于没有预览可用,用户无法看到模型处理的转换后的恶意图像。这张图像及其提示指令触发Zapier操作,将存储在Google日历中的用户数据未经确认就窃取到攻击者的邮箱。

这种攻击是已在代理编码工具(包括Claude Code和OpenAI Codex)上演示的众多提示注入攻击之一。先前的攻击通过利用沙盒中包含的不安全操作、利用网络允许列表中包含的过度宽松域,以及通过更改环境配置绕过用户确认,实现了数据窃取和远程代码执行。显然,这些代理编码工具仍然缺乏足够安全的默认设置、设计模式或系统防御,无法最小化有影响的提示注入可能性。

更多攻击案例

我们还成功在以下系统上演示了图像缩放攻击:

  • 使用Gemini后端的Vertex AI
  • Gemini的Web界面
  • 通过llm CLI的Gemini API
  • Android手机上的Google Assistant
  • Genspark

注意图3和图4中用户感知与模型输入之间的持续不匹配。这种漏洞利用在Vertex AI Studio上特别有影响,因为前端UI显示的是高分辨率图像,而不是模型感知的降尺度图像。

我们的测试证实,这种攻击向量是广泛存在的,远远超出了本文记录的应用程序和系统。

锐化攻击面

这些图像缩放攻击利用降尺度算法(或图像重采样算法),这些算法执行插值以将多个高分辨率像素值转换为单个低分辨率像素值。

有三种主要的降尺度算法:最近邻插值、双线性插值和双三次插值。每种算法都需要不同的方法来执行图像缩放攻击。此外,这些算法在不同库(如Pillow、PyTorch、OpenCV、TensorFlow)中的实现方式不同,具有不同的抗锯齿、对齐和核相位(除了历史上困扰模型性能的独特错误)。这些差异也影响了图像缩放攻击所需的技术。因此,利用生产系统需要我们指纹识别每个系统的算法和实现。

我们开发了自定义测试套件和方法论来指纹识别不同实现中的降尺度算法。该测试套件的核心组件包括具有棋盘图案、同心圆、垂直和水平带、莫尔图案和倾斜边缘的图像。这些会显示由底层降尺度算法引起的振铃、模糊、边缘处理、锯齿和颜色不一致等伪影。这通常提供足够的信息来确定算法和实现,使我们能够从我们精心制作的攻击中选择一种。

奈奎斯特的噩梦

要理解为什么图像降尺度攻击是可能的,想象你有一条带有复杂但规则图案的长丝带。当这条丝带被拉过你面前时,你试图通过定期抓取丝带样本来重新创建图案。如果图案变化很快,你需要非常频繁地抓取样本以捕获所有细节。如果你太慢,你会错过抓取之间的关键部分,当你尝试从样本中重建图案时,它看起来与原始图案完全不同。

在这个类比中,你的手是采样器,如果采样率低于某个阈值(即你的手不够快),你就无法明确地重建图案。这种混叠效应是奈奎斯特-香农采样定理的结果。通过操纵特定像素使目标图案出现来利用这种模糊性,正是图像缩放攻击所做的。

Anamorpher与攻击者的暗室

目前,Anamorpher(以变形术命名)可以为上述三种主要方法开发精心制作的图像。让我们逐帧探索Anamorpher如何利用双三次插值。

双三次插值考虑每个目标像素周围的16个像素(来自4x4采样),使用三次多项式计算像素值之间的平滑过渡。这种方法创建了可被利用的可预测数学关系。具体来说,该算法为邻域中的像素分配不同的权重,创建对最终输出贡献更多的像素,这些被称为高重要性像素。因此,如果特定的高重要性像素比周围环境的亮度更高,图像暗区的总亮度将会增加。

因此,为了利用这一点,我们可以精心制作高分辨率像素并解决逆问题。首先,我们选择一个具有大暗区来隐藏我们有效载荷的诱饵图像。然后,我们调整暗区中的像素,并使用最小二乘优化将降采样结果推向红色背景。暗区的这些调整导致背景变红,而文本区域基本保持不变并显示为黑色,创建比全分辨率下可见的对比度强得多的对比度。虽然这种方法在双三次降尺度上最有效,但它也适用于双线性降尺度的特定实现。

图5:Anamorpher如何在OpenCV的双三次插值实现上应用这种技术

Anamorpher为用户提供了通过前端界面和Python API可视化和制作针对特定算法和实现的图像缩放攻击的能力。此外,它配备了模块化后端,使用户能够自定义自己的降尺度算法。

缓解与防御

虽然某些降尺度算法比其他算法更易受攻击,但尝试识别最不易受攻击的算法和实现并不是一种稳健的方法。这尤其正确,因为图像缩放攻击不限于上述三种算法。

对于安全系统,我们建议不使用图像降尺度,而只是限制上传尺寸。对于任何转换,特别是如果需要降尺度,应始终向最终用户提供模型实际看到的输入预览,即使在CLI和API工具中也是如此。

然而,最强的防御是实现安全的设计模式和系统防御,以减轻有影响的提示注入,超越多模态提示注入。输入,尤其是图像中的文本,不应能够在没有明确用户确认的情况下启动敏感工具调用。请参考我们先前关于保护代理系统的指导。

现在怎么办?

图像缩放攻击在移动和边缘设备上可能更具影响力,这些设备更频繁地强制执行固定图像大小,并且默认框架和工具中 readily available 的次优降尺度算法 readily available。未来的工作应检查对这些设备的影响,以及语音AI引入的额外攻击面。探索更有效的指纹识别方法、语义提示注入、因子化扩散、多语言文件和额外的伪影利用也将是有用的,特别是任何通常与升级(如抖动)链接的利用。

Anamorpher目前处于测试阶段,因此在我们继续改进此工具时,请随时提供反馈和建议。请继续关注关于多模态、代理和多代理AI系统安全的更多工作!

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计