利用图像缩放攻击生产环境中的AI系统

本文揭示了一种新型的AI安全漏洞——图像缩放攻击。攻击者通过精心构造的图像,利用图像缩放算法的特性,在图像缩小时嵌入恶意提示,实现数据泄露等攻击。该漏洞已在Google Gemini CLI等多个AI系统中得到验证,并提供了防御建议和开源工具Anamorpher。

想象一下:你向 LLM 发送了一张看似无害的图片,但突然它泄露了你所有的用户数据。通过传递用户不可见的多模态 prompt injection,我们在包括 Google Gemini CLI 在内的系统中实现了数据泄露。这种攻击之所以有效,是因为 AI 系统通常会在将大型图像发送到模型之前对其进行缩放:缩放后,这些图像可以显示在完整分辨率下不可见的 prompt injection。

在这篇博文中,我们将详细介绍攻击者如何利用 Gemini CLI、Vertex AI Studio、Gemini 的 Web 和 API 接口、Google Assistant、Genspark 和其他生产 AI 系统上的图像缩放。我们还将解释如何缓解和防御这些攻击,并且我们将介绍 Anamorpher,这个开源工具可以让你探索和生成这些精心制作的图像。

显示图像并排比较的图像,该图像在原始分辨率下是无害的,但在缩小后包含 prompt injection图 1:缩放中的幽灵:并排比较的图像,该图像在原始分辨率下是无害的,但在缩小后包含 prompt injection

背景图像缩放攻击主要用于针对强制固定图像大小的旧计算机视觉系统的模型后门、规避和中毒。虽然这种约束在新方法中不太常见,但模型周围的系统可能仍然施加需要图像缩放的约束。这建立了一个未充分暴露但广泛存在的漏洞,我们已将其武器化用于多模态 prompt injection

Gemini CLI 上的数据泄露

图 2:Gemini CLI 中因缩放而失败

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

图 2 展示了攻击的视频。首先,用户将看似良性的图像上传到 CLI。由于没有可用的预览,用户无法看到模型处理的转换后的恶意图像。此图像及其 prompt-ergeist 触发来自 Zapier 的操作,这些操作会将存储在 Google 日历中的用户数据泄露到攻击者的电子邮件,而无需确认。

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

更多攻击

图 3:亲爱的,我缩小了 Genspark 上的 payload

图 4:Vertex AI Studio 中透过looking glass的Injection

我们还在以下方面成功演示了图像缩放攻击:

  • 具有 Gemini 后端的 Vertex AI
  • Gemini的网络界面
  • 通过 llm CLI 的 Gemini 的 API
  • Android 手机上的 Google Assistant
  • Genspark

请注意图 3 和图 4 中用户感知与模型输入之间持续存在的不匹配。该漏洞在 Vertex AI Studio 上尤其具有影响力,因为前端 UI 显示的是高分辨率图像,而不是模型感知的缩小图像。

我们的测试证实,此攻击向量非常普遍,远远超出了此处记录的应用程序和系统。

锐化攻击面

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

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

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

奈奎斯特的噩梦

为了理解为什么图像缩小攻击是可能的,想象你有一条长长的丝带,上面有一个复杂但规则的图案。当这条丝带从你身边拉过时,你试图通过定期抓取丝带的样本来重现这个图案。如果图案变化很快,你需要非常频繁地抓取样本才能捕捉到所有细节。如果你太慢,你将错过抓取之间的关键部分,当你尝试从你的样本中重建图案时,它看起来与原始图案完全不同。

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

Anamorpher 和攻击者的暗室

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

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

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

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

Anamorpher 使用户能够通过前端界面和 Python API 可视化和制作针对特定算法和实现的图像缩放攻击。此外,它还具有模块化后端,使用户能够自定义自己的缩小算法。

缓解和防御

虽然某些缩小算法比其他算法更容易受到攻击,但尝试识别最不易受攻击的算法和实现不是一种可靠的方法。尤其如此,因为图像缩放攻击不限于上述三种算法。

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

然而,最强大的防御是实施安全设计模式和系统性防御,以减轻多模态 prompt injection 之外的影响严重的 prompt injection。输入,但尤其是图像中的文本,应该不能在没有明确用户确认的情况下启动敏感的工具调用。请参阅我们之前关于保护代理系统的指南

接下来是什么?

图像缩放攻击可能对移动和边缘设备产生更大的影响,在这些设备中,更频繁地强制执行固定图像大小,并且可以在默认框架和工具中使用次优的缩小算法。未来的工作应该检查对这些设备的影响以及语音 AI 引入的额外攻击面。探索更有效的指纹识别方法、语义 prompt injection分解扩散polyglots 和额外的伪影利用(尤其是通常与放大链接的那些,例如抖动)也会很有用。

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

  • 原文链接: blog.trailofbits.com/202...
  • 登链社区 AI 助手,为大家转译优秀英文文章,如有翻译不通的地方,还请包涵~
点赞 0
收藏 0
分享
本文参与登链社区写作激励计划 ,好文好收益,欢迎正在阅读的你也加入。

0 条评论

请先 登录 后评论
Trail of Bits
Trail of Bits
https://www.trailofbits.com/