简单地解压缩 JPEG 图像会触发漏洞吗?

信息安全 应用安全 攻击 压缩
2021-08-08 02:14:26

小说《恶魔》经常因其在描绘中的真实性而受到称赞,而不仅仅是混搭流行语。

然而,这让我觉得不切实际:

Gragg 的电子邮件包含一个有毒的经纪公司标志 JPEG。JPEG 是压缩的图像文件。当用户查看电子邮件时,操作系统会运行解压算法将图形呈现在屏幕上;正是这种解压算法执行了 Gragg 的恶意脚本,让他溜进了用户的系统——授予他完全访问权限。有一个可用于解压漏洞的补丁,但年长的有钱人通常对安全补丁一无所知。

有这样的事吗?这个描述是基于一些真实的利用吗?

这是 2006 年 12 月发布的。

说“操作系统”正在解压缩图像以呈现它是否明智?


请注意,这与 PHP 图片上传脚本的安全性无关。我问的是显示 JPEG 的解码过程,而不是从远程用户那里获取输入的脚本,也不是错误命名为.jpeg. 即使是流行语匹配,我正在响应的重复标记看起来也很糟糕;除了提到图像文件之外,真的没有什么相似之处。

4个回答

有这样的事吗?

绝对地。向解析器提供恶意输入是创建漏洞利用的最常见方法之一(对于 JPEG,“解压缩”就是“解析”)。

这个描述是基于一些真实的利用吗?

它可能基于Microsoft Windows GDI+ 缓冲区溢出漏洞

GDI+ (Gdiplus.dll) 的 JPEG 解析组件处理格式错误的 JPEG 图像的方式存在缓冲区溢出漏洞。通过将特制的 JPEG 文件引入易受攻击的组件,远程攻击者可以触发缓冲区溢出条件。

...

未经身份验证的远程攻击者可能会通过引入特制的 JPEG 文件在易受攻击的系统上执行任意代码。恶意 JPEG 图像可能通过 恶意网页、HTML 电子邮件或电子邮件附件引入系统。

.

这是 2006 年 12 月发布的。

GDI+ JPEG 解析漏洞于 2004 年 9 月发布。

说“操作系统”正在解压缩图像以呈现它是否明智?

当然; 在这种情况下,它是一个系统库,需要操作系统供应商补丁来纠正它。此类库通常由多个软件包使用,使它们成为操作系统的一部分,而不是特定于应用程序的。

实际上,“电子邮件应用程序调用系统库来解析 JPEG”,但“操作系统”对于小说来说已经足够接近了。

同意其他人说是的,这是完全可能的,但也添加了一个有趣的轶事:

Joshua Drake (@jduck) 发现了一个基于非常相似概念的错误(图像由操作系统解释),最终被命名为“Stagefright”,并影响了数量可笑的 Android 设备

他还在libpng中发现了一个类似的基于图像的错误,该错误会导致某些设备崩溃。他在推特上发布了一个利用示例,基本上是说“嘿,看看我制作的这个很酷的恶意 PNG,它可能会使你的设备崩溃”,却没有意识到推特已经添加了内联图像的自动渲染。不用说,当浏览器试图在他们的提要中加载图像缩略图时,他的许多追随者就开始让他们的机器崩溃。

不切实际?最近在字体定义解析中出现了严重错误:https : //technet.microsoft.com/en-us/library/security/ms15-078.aspx 和 libjpeg 变更说明中充满了安全建议。解析文件[1] 很困难:上溢、下溢、越界访问。最近开发了许多模糊测试工具,用于半自动检测可能导致崩溃的输入。

[1] 或网络数据包、XML 甚至 SQL 查询。

正如其他人指出的那样,此类攻击通常利用缓冲区溢出。

关于如何的具体细节,它被称为堆栈粉碎攻击。它涉及破坏调用堆栈,并用攻击者提供的代码的地址覆盖要执行的合法代码的地址,而攻击者提供的代码将被执行。

您可以在insecure.org/stf/smashstack.html找到详细信息