小说《守护进程》因其刻画真实而不是混搭流行语而广受赞誉。

然而,这使我感到不切实际:


Gragg的电子邮件包含经纪人徽标的JPEG格式。 JPEG是压缩的图像文件。当用户查看电子邮件时,操作系统运行解压缩算法以在屏幕上呈现图形。正是这种解压缩算法执行了Gragg的恶意脚本,并允许他滑入用户系统内-授予他完全访问权限。有一个可用于解压缩漏洞的补丁程序,但是年长的有钱人通常对安全补丁程序一无所知。


是否有这样的事情?该描述是否基于某些真实的利用?

该描述于2006年12月发布。

说“操作系统”正在解压缩图像以进行渲染是否明智?


请注意,这与PHP图像上传脚本的安全性无关。我要问的是显示JPEG的解码过程,而不是从远程用户那里获取脚本的脚本,也不是错误地命名为.jpeg的文件。我正在回应的重复标记看起来很差劲,即使是流行词匹配也是如此;除了提及图像文件外,真的没什么不同。

评论

我在互联网上找不到任何证据,但我记得我曾经收到过一个打开CD托盘的JPG图像(这是12年前的Windows XP)。

自2004年使用GDI +进行攻击以来,图像文件中的恶意软件便在小说中广受欢迎。这个例子很合理。有些不是这样。也许更糟的是在Bones中,有人在凶杀受害者的骨头上刻上一个分形图像,当他们上传照片时,该图像控制了主角的网络。那使我的大脑受伤。

这还不足以得到真正的答案,但是实际上,不同的图像格式WMF允许您按设计运行任意代码。它是为16位Windows时代的智能矢量图形设计的,当时被认为是一个不错的折衷方案。快进到今天,互联网使这成为一个残酷的安全漏洞。 TTF文件(字体)也被利用。 JPG的某些解析器完全有可能以相同的方式具有漏洞利用漏洞。

关于CD托盘开启器不是JPEG,这是VBS脚本,尽管有jpeg文件扩展名,但IE仍执行了该操作。

PS3上用来播放录制的PS2游戏(不是在开玩笑)的一种攻击方式是在固件的1.75版上打开特制的TIFF图像。另外,Android上还有StageFright漏洞,它甚至不需要打开消息!所以,是的,完全有可能。

#1 楼


有这样的事情吗?


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


此说明是否基于


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


途中有一个缓冲区溢出漏洞GDI +(Gdiplus.dll)的JPEG解析
组件处理格式错误的JPEG图像。通过
向易受攻击的组件引入特制的JPEG文件,
远程攻击者可能会触发缓冲区溢出情况。

...

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





于2006年12月发布。


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


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


确定;在这种情况下,它是一个系统库,需要OS供应商补丁才能对其进行更正。通常,这样的库由多个软件包使用,使其成为操作系统的一部分,而不是特定于应用程序的。

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

评论


如果我没记错的话,索尼Playstation Portable(PSP)最初的一些“越狱”方法使用的是“特制”图像文件,该文件破坏了PSP的解码器并允许执行嵌入JPG中的代码。

– TripeHound
15年8月27日在12:28

“攻击者可能执行任意代码”是缓冲区溢出错误的样板吗?从用户模式线程提升特权将是另一个问题。

–JDługosz
15年8月27日在16:25

@JDługosz,是的,这是一个标准化的描述。大多数CVE和安全漏洞描述都使用一组标准短语,例如“ [本地|远程]攻击者可以[具有[用户|提升的]特权]潜在地执行[任意] [命令|代码]。简洁的关键字和短语(“样板”)的重复使用使防御者可以快速评估风险-例如,[local | remote]关键字对于评估风险很重要。 GDI +公告中使用的措词告诉我,代码在用户打开JPEG的特权下运行-在2004-2006 Windows中,通常是管理员!

– gowenfawr
15年8月27日在16:48

仅当所讨论的解压缩算法中存在允许任意代码执行的错误时,才可能利用此漏洞,对吗?

– Max Nanasy
2015年8月29日在3:19



@TripeHound是的,彩虹色,外壳封面图片中的重影和tiff格式,以使用chickenHEN。我还在这附近。编辑:是的,chickHEN,但不是tiff:/

–以前
15年8月29日在13:18



#2 楼

同意别人说是完全有可能的,但也要添加一个有趣的轶事:

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

他还在libpng中发现了类似的基于图像的错误,该错误会导致某些设备崩溃。他在推特上发了一个例子,基本上说:“嘿,看看我制作的这个很酷的恶意PNG,它可能会使您的设备崩溃”,却没有意识到Twitter已经添加了自动渲染内嵌图像的功能。不用说,他的许多追随者在浏览器尝试将图像缩略图加载到其提要中的那一刻就开始使计算机崩溃。

评论


实际上,媒体框架称为“ Stagefright”,但名称已经足够吸引人,可以将其命名为“ Stagefright bug”。 /题外话

– Lekensteyn
15年8月27日在19:02

#3 楼

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

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

评论


是的...用非托管代码很难-.-如果只用托管代码编写代码,缓冲区上溢/下溢将减少到当前对安全性影响的1%以下...

– Falco
15年8月28日在11:35

如果C编译器作者对提高鲁棒性感兴趣,那么C可以在语义为“给出有效输入,产生正确的输出;给定无效输入,产生松散约束的输出”的许多任务上胜过Java。不幸的是,编译器作者似乎对此没有兴趣,并且更喜欢优化逻辑,以防止无法安全地使用UB的UB在其他情况下不会发生。情况。

–超级猫
15年8月28日在21:45

@Falco:托管代码并非免费;另一方面,由于超现代C消除了C曾经具有的许多性能优势,这种情况在程序员不关心诸如溢出之类的情况下的精确行为的情况下,我看到C保持竞争力的唯一方法是正式的目录行为,不是标准所保证的,但是得到了广泛实施,并允许程序员指定它们。

–超级猫
15年8月28日在21:50

@Falco不幸的是,托管运行时也共享缓冲区溢出。编写Java的人在使用防御性编程来保护运行时的弱点方面做得非常糟糕。实际上,我只是碰巧遇到了最新的Java语言(并向甲骨文报告,甲骨文确认了)。一切都归结为对过早优化的不明智的追求。我想知道我们是否突然有了突破并且可以构建20 GHz芯片,程序员是否最终会接受边界检查等。还是他们太固执。

–亚历山大·杜宾斯基(Aleksandr Dubinsky)
15年8月29日在10:41

@AleksandrDubinsky我不会屏住呼吸-我们在处理速度的数量级上有了一些提高,但仍有很多人坚持避免边界检查。如果CPU速度提高1000倍,那么到目前为止的原因仍然是相同的。但是,还是有希望的-例如,微软研究院一直在从头开始开发一个功能全面的托管操作系统-它不是为性能而设计的,而是为了安全性而设计的,但对于一个研究项目,它仍然表现良好。而且,在管理整个操作系统时,可以避免在托管和非托管之间进行通信的成本。

–罗安
15年8月31日在8:20

#4 楼

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

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

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

#5 楼

是的,这是可能的:

恶意软件高级安全研究员Jerome Segura和法国人合作发现,一种邪恶的Zeus银行木马的新变种– ZeusVM –隐藏在JPG图像文件中。安全研究员Xylitol。
该行为被称为隐写术-隐藏其他消息或图像中的消息或图像。
对于ZeusVM,该恶意软件的代码隐藏在未使用的JPG图像中。 Segura透露。这些照片用作ZeusVM检索其配置文件的误导。
“ JPG包含恶意软件配置文件,该文件本质上是脚本和金融机构的列表-但无需由受害者自己打开, ” Segura在星期二的一封电子邮件中告诉SCMagazine.com。 “实际上,JPG本身对用户几乎没有可见性,并且在很大程度上是一种伪装技术,以确保从安全软件的角度来看不会被检测到。”

资料来源。

评论


尽管该技术可以解决有问题的JPEG解码器,但这似乎不是这种示例。这只是将配置文件编码为JPEG,以隐藏对现有感染的更新。 OP似乎在询问JPEG图像是否是传播新感染的媒介。

–斯蒂芬·托瑟(Stephen Touset)
15年8月26日在19:20

我认为这个示例比简单的受感染图像更有趣,用户可能需要与之进行交互。本示例显示了一种复杂的恶意方法,该方法没有引起用户的注意,并且可能导致浏览器中的人攻击

–user45139
15年8月26日在19:37

利用JPEG解压缩器感染的图像的重点是不需要交互。如果您使用的是错误的JPEG实施方式(例如@gowenfawr提供的GDI +示例),则仅查看网页或电子邮件就会受到损害。这样的图像甚至可以由可信赖的网站上的广告脚本提供。这比将JPEG用作先前存在的感染的无害的通信机制要有趣得多,而且令人担忧。

–斯蒂芬·托瑟(Stephen Touset)
2015年8月26日在20:14



@TheJulyPlot我认为您误会了它的工作方式。在此示例中,Zeus木马使用jpg隐藏其下载配置文件的方式。已经感染了木马的计算机将下载图像并提取数据。该映像仅包含(隐藏)配置文件,不包含木马,并且没有自行感染系统的机制。仅通过在浏览器中下载图像就不会感染您。

–罗伯特
15年8月27日在20:45

我不确定“复杂”是否真的描述了这样的事情。 JPEG解码器通常只运行到EOF字节(如果存在),就像将任何其他文件连接到图像文件的末尾一样容易。 cat img.jpg evil.zip> evil.jpg就足够了。

– alanaktion
15年8月28日在17:18