Google Project Zero 所见最天才的漏洞利用之一: NSO zero-click iMessage exploit - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
nook4sh
V2EX    信息安全

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

  nook4sh 2021 年 12 月 16 日 11184 次点击
这是一个创建于 1510 天前的主题,其中的信息可能已经有所发展或是发生改变。

原文见: 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 位寄存器、加法器等等,从而可以在这个环境下执行任意代码,接下来的沙箱逃逸,就会在这个环境下运行,而这些仅仅发生在一个图像的解析过程中。

62 条回复    2023-02-08 18:02:34 +08:00
cest
    1
cest  
   2021 年 12 月 16 日
apple 打赏过 xpdf 吗?
yanyumihuang
    2
yanyumihuang  
   2021 年 12 月 16 日
这也太猛了吧
wazggcd
    3
wazggcd  
   2021 年 12 月 16 日 via iPhone
卧槽,那有什么临时性的防御措施吗?
also24
    4
also24  
   2021 年 12 月 16 日
@wazggcd #3
The vulnerability discussed in this blog post was fixed on September 13, 2021 in iOS 14.8 as CVE-2021-30860.
v2000000001ex
    5
v2000000001ex  
   2021 年 12 月 16 日
ios13.5 索索发抖
rphoho
    6
rphoho  
   2021 年 12 月 16 日
类似之前微信的 gif 溢出 bug 吧
Ginray
    7
Ginray  
   2021 年 12 月 16 日
太猛了,每一步都在想象之外
madNeal
    8
madNeal  
   2021 年 12 月 16 日
java ${XXX:xxxxxxx}
hahahaha123567
    9
hahahaha123567  
   2021 年 12 月 16 日
攻击者怎么知道 Apple 使用的是 ImageIO/Xpdf 库呢?
这种纯内存操作已经是炫技了吧
6ufq0VLZn0DDkL80
    10
6ufq0VLZn0DDkL80  
   2021 年 12 月 16 日
@wazggcd ios 14.8 已经修复了
x86
    11
x86  
   2021 年 12 月 16 日
这是个神仙呀
liuxu
    12
liuxu  
   2021 年 12 月 16 日
真 TM 牛逼。。。
edwinxe2v
    13
edwinxe2v  
   2021 年 12 月 16 日   1
卧槽,太牛逼了!多谢分享,讲解得很清楚。
搜了一下,Hacker news 的相关讨论: https://news.ycombinator.com/item?id=29568625
24bit
    14
24bit  
   2021 年 12 月 16 日
太强了
zm8m93Q1e5otOC69
    15
zm8m93Q1e5otOC69  
   2021 年 12 月 16 日   14
”但是攻击者使用了超过七万个段命令组成门电路并模拟了一个小型计算机架构“
dingwen07
    16
dingwen07  
   2021 年 12 月 16 日
太强了。。。
qsmd42
    17
qsmd42  
   2021 年 12 月 16 日
其实我好奇的是国内的网安承包商有没有买 NSO 的软件
micean
    18
micean  
   2021 年 12 月 16 日
我的天。。。。
shayuvpn0001
    19
shayuvpn0001  
   2021 年 12 月 17 日
关闭 iMessage 了应该就没事了吧
AlexaZhou
    20
AlexaZhou  
   2021 年 12 月 17 日   1
这个漏洞比 log4j 牛逼多了,要是熬夜修这个漏洞也有意思呀,熬夜修 log4j 这么蠢的漏洞,一点成就感都没有
agagega
    21
agagega  
   2021 年 12 月 17 日 via iPhone
@hahahaha123567
iOS 系统里有 legal notice ,里面应该会写明用到的每一个开源软件以及 license
wazggcd
    22
wazggcd  
   2021 年 12 月 17 日 via iPhone
@also24 哦哦好,我对安全不太懂,以为是还没修复的呢,真是涨知识啊
@cholerae 好的好的,那就放心了
levelworm
    23
levelworm  
   2021 年 12 月 17 日
我擦太牛逼了,什么样的人可以发现这种漏洞?感觉是深深浸入系统编程几十年才有这种功力。。。
levelworm
    24
levelworm  
   2021 年 12 月 17 日
妈的这种才叫编程。。。平时做的那些都是什么啊。。。
Perry
    25
Perry  
   2021 年 12 月 17 日 via iPhone
牛逼,大学的时候光是设计十几个 instructions 就头秃了
cwyalpha
    26
cwyalpha  
   2021 年 12 月 17 日 via iPhone
对比下 l4j 的一句话攻击就知道二进制攻击的难度有多大了
Elietio
    27
Elietio  
   2021 年 12 月 17 日
这才叫黑客啊,太强了
paceewang1
    28
paceewang1  
   2021 年 12 月 17 日
"尽管 JBIG2 标准下没有提供脚本的执行环境,但是攻击者使用了超过七万个段命令组成门电路并模拟了一个小型计算机架构..."
xe2vherd
    29
xe2vherd  
   2021 年 12 月 17 日
真正的 hacker news.
treo
    30
treo  
   2021 年 12 月 17 日   1
以色列人做的洞,卖给沙特政*府,用来针对沙特异*议者
为啥这么麻烦,直接把异*议者肢解不就好了
documentzhangx66
    31
documentzhangx66  
   2021 年 12 月 17 日
楼上居然有一堆说强,看来我 guo 计算机教育任重道远..

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

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

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

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

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

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

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

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

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

他太懂回答了
yinanc
    37
yinanc  
   2021 年 12 月 17 日
这也太神仙了
xFrye
    38
xFrye  
   2021 年 12 月 17 日
@documentzhangx66 谁给你说文件后缀名就是文件类型的?
xing7673
    39
xing7673  
   2021 年 12 月 17 日 via iPhone
@shayuvpn0001 如果 apple 是一个正常应用程序员写的话,应该就不会去解析这个 gif 了。那就不会有问题产生。
boris93
    40
boris93  
   2021 年 12 月 17 日 via iPhone
@Coolwinds #34 不,是用各种逻辑运算,以软件的方式实现了一部分硬件………
coer
    41
coer  
   2021 年 12 月 17 日
@treo 沙特如果真的用了,那亚马逊的老板贝索斯估计就是因为这个漏洞被攻击了 hhh ,沙特王子给他发了 gif 图
kidblg
    42
kidblg  
   2021 年 12 月 17 日   2
贝索斯之前闹丑闻,就是因为中东皇室小哥发了一个小黄图给贝索斯,然后贝索斯点开,就中招了,然后被中东小哥看到了绯闻短信,丑闻抖了出来。之所以搞贝索斯,是因为他之前买了华盛顿邮报,这个报纸经常报道中东皇室负面新闻。
mamba
    43
mamba  
   2021 年 12 月 17 日
@collen 你这是想要笑死我
mamba
    44
mamba  
   2021 年 12 月 17 日
@collen 不给人家留一点面子
thcode
    45
thcode  
   2021 年 12 月 17 日
@collen 我以前会和自己说,要接受人类的多样性。但是现在随手 block 完事,毕竟中国精神障碍疾病的就诊率非常低,你根本不知道是不是在和正常人交流
mooniitt
    46
mooniitt  
   2021 年 12 月 17 日
佩服楼主能理解原文
Showfom
    47
Showfom  
PRO
   2021 年 12 月 17 日
太牛逼了
levelworm
    48
levelworm  
   2021 年 12 月 17 日 via Android
@coer 这个是 zero click 应该不用点,不过也可能是双层攻击。。。
zyffy
    49
zyffy  
   2021 年 12 月 17 日 via Android
关于楼上说解析的,一般 codec 都是根据文件的 magic number 来进行解析的,比如微信发表情
sillydaddy
    50
sillydaddy  
   2021 年 12 月 17 日
之前看过栈溢出的利用,原理很简单,只是覆盖返回地址。这个应该是利用堆溢出吧,难度系数更大。
我觉得这个漏洞之所以这么精彩,在于 JBIG2 本身提供的 API 功能: 「 JBIG2 会对图像的 bitmap 进行逻辑运算」,有了这个就有了实现 mini 图灵机的机制,否则的话,这个漏洞的利用跟其他的堆溢出漏洞应该差不多。

期待下一篇关于怎样逃脱沙盒的介绍。
documentzhangx66
    51
documentzhangx66  
   2021 年 12 月 17 日
@xFrye

谁给你说我说过文件后缀名就是文件类型的?

讨论之前,请一定要先仔细看清评论,别急着回复,别让情绪淹没你的理智。
documentzhangx66
    52
documentzhangx66  
   2021 年 12 月 17 日
@collen
你想评论我,或者是觉得我哪里说的不对,直接 @ 我就行了。

没必要偷偷躲着发一堆我之前的发言,然后又不敢 @ 我。这种做法像极了之前那位网友:又菜,又没实力,但又想刷存在感。
treo
    53
treo  
   2021 年 12 月 17 日
@levelworm Bezos iphone 被黑是发生在 2018 年 5 月,那时候这个 zero-click exploit 很可能还没开发出来
documentzhangx66
    54
documentzhangx66  
   2021 年 12 月 17 日
@thcode

你在不了解前后文,不了解别人的情况下,还在别人背后,批评别人是中国精神障碍疾病或不正常人。

那,你是什么?
treo
    55
treo  
   2021 年 12 月 17 日
joooooker21
    56
joooooker21  
   2021 年 12 月 17 日
@documentzhangx66 #31

Xpdf 不是 pdf ,请看完全文再评论。
documentzhangx66
    57
documentzhangx66  
   2021 年 12 月 17 日
@joooooker21

我没说 Xpdf 是 pdf ,请仔细阅读我在 31 楼的回帖后再评论。
greenskinmonster
    58
greenskinmonster  
   2021 年 12 月 18 日
那么这个漏洞到底被利用了几年?
ambeta
    59
ambeta  
   2021 年 12 月 18 日
评论区混入了奇怪的东西
kidblg
    60
kidblg  
   2021 年 12 月 18 日
@greenskinmonster 黑客圈里有很多漏洞,发现了之后,都是拿出来卖的。估计还有很多核弹级别的漏洞还没找到出手阔绰的好买家。
LinShiG0ng
    61
LinShiG0ng  
   2021 年 12 月 20 日
已经完全超出我的知识范围了,真的就是,我看不懂,但是我大受震撼
onlyu
    62
onlyu  
   2023 年 2 月 8 日
有很多价值不高的洞在求名,在很多价值很高的洞在求利
关于     帮助文档     自助推广系统     博客     API     FAQ     Solana     4193 人在线   最高记录 6679       Select Language
创意工作者们的社区
World is powered by solitude
VERSION: 3.9.8.5 46ms UTC 09:37 PVG 17:37 LAX 01:37 JFK 04:37
Do have faith in what you're doing.
ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86