之前闹得沸沸扬扬的Pegasus, 利用了iMessage的一个漏洞可以让收到讯息的人只要看到、
不用点任何连结都会中奖。有人研究了这个攻击是怎么做的,发现这个攻击方法真是史上最
复杂但又很精巧。
简单来说, 大致流程是这样的:
1. 攻击者做了一个pdf, 但用gif副档名让iOS会尝试去render这个假gif
2. iOS rendering其实不会管档名, 而是会用内容去判断该怎么render, 于是这个恶意档案
就进了PDF的rendering engine
3. PDF有种古老的格式叫JBIG2, 是90年代的Xerox scanner用的, 可以把扫描进去的bitmap
压缩得很小。但这个PDF decoder有个interger overflow的漏洞, 可以让攻击者用一个JBIG
2指令render一个4 bytes的bitmap来写入到任意的内存位置。
4. 但问题来了, JBIG2是为了压缩/解压缩设计的, 并没有general的scripting能力, 连作
简单的运算都不行,这样要怎么在PDF的payload里骗JBIG2去计算出正确的内存位置,然
后把后门程式写到那个特定的地方呢?
5. 攻击者发现, 经过一些巧妙的指令组合, 可以用JBIG2指令在任何记体体位置上做出AND,
OR, XOR, XNOR的逻辑运算。
6. 有了基本的逻辑闸, JBIG2的格式就等于是turing complete了。于是,攻击者就用了七
万个JBIG2指令和这些逻辑闸做出了一个迷你的电脑架构!!有暂存器、加法器、比较器,
可以作基本的运算、循环之类的事情。
7. 最后,有了个迷你电脑,就透过JBIG2 bootstrap进入这个模拟的电脑环境中,然后再用
这个模拟环境跑真正的攻击程式,去找出正确的内存位置把后门写进去。
我看不懂这篇在讲什么
谁要教我