
POC for CVE-2018-4327
针对 CVE-2018-4327 的概念验证(至少我认为是,因为 CVE-2018-4327 和 CVE-2018-4330 都由 @SparkZheng 讨论过,但他没有明确说明哪个漏洞对应哪个 bug,鉴于他先描述了前者,我暂且这样猜测)。
已在 iPhone 6S 11.3.1 上测试
理论上适用于 11.4 及之前的版本
允许你在 SpringBoard 及部分服务中将 PC(ARM 上对应 IP 寄存器的版本)设置为你选择的值。你需要先运行代码,然后进入蓝牙设置并连接到一个设备。如果无效,请关闭蓝牙再重新打开。
利用过程相当繁琐,但我喜欢这个漏洞,因此想编写一个概念验证,并在过程中学习。
使用了 @raniXCH 的 bluetoothdPoC 代码来处理 Mach 消息的准备工作以及向蓝牙服务发送消息的过程,并对其进行了调整以适应本 POC。
使用 jtool 来查找序数(ordinal)及其他内容。
通过一些逆向工程来确定正确的消息大小。
致谢:
@SparkZheng - 感谢他在 DEFCON 26 上精彩的演讲。
@raniXCH - 感谢他在 HITB 上出色的演示以及 bluetoothdPoC。
Jonathan Levin - 感谢他的优秀著作和 jtool。
参考资料:
http://www.newosxbook.com/tools/jtool.html - jtool,我用它来查找序数及其他内容。
https://www.weibo.com/ttarticle/p/show?id=2309404271293301154324 - @SparkZheng 的材料。
https://github.com/rani-i/bluetoothdPoC - @raniXCH 的概念验证代码。
https://gsec.hitb.org/materials/sg2018/D2%20-%20The%20Road%20to%20iOS%20Sandbox%20Escape%20-%20Rani%20Idan.pdf - @raniXCH 的材料第一部分。
https://blog.zimperium.com/cve-2018-4087-poc-escaping-sandbox-misleading-bluetoothd/ - @raniXCH 的材料第二部分。