Google Project Zero 所见最天才的漏洞利用之一: NSO zero-click iMessage exploit

2021-12-16 18:45:16 +08:00
 Divinook

原文见: https://googleprojectzero.blogspot.com/2021/12/a-deep-dive-into-nso-zero-click.html

今天上午摸鱼时在 hacker news 上看到了这篇文章,惊叹于其中体现的技术细节与智慧,有兴趣的朋友可以直接看原文,这里做一个大概的介绍。

简单介绍

所谓的 zero-click 漏洞,是与 one-click 漏洞作比较,之前 iMessage 出现过通过钓鱼链接诱使目标点击并进行攻击,这次的漏洞强大在于不需要任何点击,只需要通过 iMessage 向目标发送一个精心构造的 GIF payload ,目标设备就会在无感知的情况下被攻陷,完全无法防御。

利用原理

1

iMessage 在接受后缀为.gif 的文件时,会对它进行解析和渲染,Apple 使用 ImageIO 库来解析目标文件,但是 ImageIO 库会尝试猜测目标文件的类型并进行相应解析(而非使用后缀,见[https://googleprojectzero.blogspot.com/2020/04/fuzzing-imageio.html]),因此攻击面扩大到了 20 多个图像编解码器。

2

漏洞的下一步利用在 CoreGraphics PDF 的解析过程中,JBIG2 是 CoreGraphics PDF 中一种用于图像压缩和解压缩的标准,在 JBIG2 中,它会尝试将每个页面分割成单个字形,并用模式匹配将相似的字形作为一个来储存,从而压缩体积。在压缩和解压缩的过程中,JBIG2 会对图像的 bitmap 进行逻辑运算,例如在压缩时使用 XOR 来储存两个相似图像之间的差异像素,并在解压缩时用 OR 来恢复原始图像(这里纯文字可能不太好理解,原文有一些图像辅助解释,可以在原文查看)。JBIG2 中的逻辑运算符( AND, OR, XOR or XNOR )使用非常灵活,他将图像视为 segment 并进行逻辑运算操作,这些操作被称为段命令。 Apple 使用开源的 Xpdf 作为 JBIG2 的实现,在 Xpdf 在处理引用 JBIG2Segment 类(包括 Xpdf 的控制命令,用于对图像的操作)时存在一个典型的整数溢出问题,攻击者可以在这里的溢出基础上进行堆溢出(这里涉及很多二进制安全的细节,可以在原文查看),从而修改了用于控制图像边界的变量,进而解除了绘制区域的限制。

3

在解除了画布限制后,攻击者就可以操作段命令( JBIG2 标准下存在完整而灵活的 AND, OR, XOR, XNOR 逻辑运算)来对任意内存上进行操作,实际上这些逻辑运算符可以组成门电路并进行计算操作。尽管 JBIG2 标准下没有提供脚本的执行环境,但是攻击者使用了超过七万个段命令组成门电路并模拟了一个小型计算机架构,有完整的 64 位寄存器、加法器等等,从而可以在这个环境下执行任意代码,接下来的沙箱逃逸,就会在这个环境下运行,而这些仅仅发生在一个图像的解析过程中。

10130 次点击
所在节点    信息安全
62 条回复
agagega
2021-12-17 00:51:59 +08:00
@hahahaha123567
iOS 系统里有 legal notice ,里面应该会写明用到的每一个开源软件以及 license
wazggcd
2021-12-17 01:39:37 +08:00
@also24 哦哦好,我对安全不太懂,以为是还没修复的呢,真是涨知识啊
@cholerae 好的好的,那就放心了
levelworm
2021-12-17 02:52:14 +08:00
我擦太牛逼了,什么样的人可以发现这种漏洞?感觉是深深浸入系统编程几十年才有这种功力。。。
levelworm
2021-12-17 02:53:23 +08:00
妈的这种才叫编程。。。平时做的那些都是什么啊。。。
Perry
2021-12-17 08:09:35 +08:00
牛逼,大学的时候光是设计十几个 instructions 就头秃了
cwyalpha
2021-12-17 08:59:30 +08:00
对比下 l4j 的一句话攻击就知道二进制攻击的难度有多大了
Elietio
2021-12-17 10:04:50 +08:00
这才叫黑客啊,太强了
paceewang1
2021-12-17 10:10:31 +08:00
"尽管 JBIG2 标准下没有提供脚本的执行环境,但是攻击者使用了超过七万个段命令组成门电路并模拟了一个小型计算机架构..."
zmxnv123
2021-12-17 11:17:33 +08:00
真正的 hacker news.
treo
2021-12-17 11:19:42 +08:00
以色列人做的洞,卖给沙特政*府,用来针对沙特异*议者
为啥这么麻烦,直接把异*议者肢解不就好了
documentzhangx66
2021-12-17 12:06:53 +08:00
楼上居然有一堆说强,看来我 guo 计算机教育任重道远..

就算你不懂图像处理,至少应该明白,接口在设计时,应该加入指定文件类型,来避免把 gif 猜测到 pdf 这种浪费算力与电池的脑 can 操作。
zhoudaiyu
2021-12-17 13:26:13 +08:00
ta 来了,ta 来了,独醒帝来了
LUO12826
2021-12-17 13:55:55 +08:00
@documentzhangx66 你能有多明白呢?反正我就收到过文件拓展名和实际文件类型不一致的图片。而且这也不影响他们强呀,系统级编程做到这种程度的人能有多少呢?
Coolwinds
2021-12-17 14:48:20 +08:00
什么叫门电路组成了一个小型计算机架构?传说中的 0,1 写了个操作系统?
pengtdyd
2021-12-17 14:55:32 +08:00
这个要懂汇编吧,现在国内懂汇编的人都不多了吧
collen
2021-12-17 15:02:04 +08:00
请问如何把安卓声音发送到 PC 电脑?

程序员应该学点婚恋学的基础知识,来避免自己陷入舔狗一无所有,或高攀成功后婚后吞针的遭遇。

楼上居然有一堆说强,看来我 guo 计算机教育任重道远..

就算你不懂图像处理,至少应该明白,接口在设计时,应该加入指定文件类型,来避免把 gif 猜测到 pdf 这种浪费算力与电池的脑 can 操作。

Windows 也是这样。开机时、解开锁屏时、mstsc-RDP-远程桌面连接时,等等。

不喜欢就别去读,不就行了。换个对味的内容。

起点,米读小说,快看,那么多有趣的内容,不够你看吗?

比如起点的冒牌大英雄、裁决、异界全职业大师、末法王座;
比如米读小说的玄幻:我真的不是盖世英雄;
比如快看的我独自升级。
推荐的都是爽文。

PC 装一个 360 安全卫士,打开里面的流量防火墙里的防护功能,然后打开树莓派 4 。如果 树莓派 4 有什么攻击网络的动作,360 安全卫士的流量防火墙的防护功能,会记录并提示你的。

他太懂回答了
yinanc
2021-12-17 15:16:27 +08:00
这也太神仙了
xFrye
2021-12-17 15:26:46 +08:00
@documentzhangx66 谁给你说文件后缀名就是文件类型的?
xing7673
2021-12-17 15:42:20 +08:00
@shayuvpn0001 如果 apple 是一个正常应用程序员写的话,应该就不会去解析这个 gif 了。那就不会有问题产生。
boris93
2021-12-17 16:37:57 +08:00
@Coolwinds #34 不,是用各种逻辑运算,以软件的方式实现了一部分硬件………

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/822664

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX