针对 iOS 蓝牙栈漏洞 CVE-2018-4327 和 CVE-2018-4330 的概念验证利用程序,通过恶意蓝牙设备连接可在 iPhone 6S 上实现 ARM PC 寄存器控制。
CVE-2018-4327 的 POC(至少我是这么认为的,因为 @SparkZheng 同时提到了 CVE-2018-4327 和 CVE-2018-4330,但没有说明哪个对应哪个漏洞,但由于他先描述了这一个,所以我猜是这个)。
在 iPhone 6S 11.3.1 上测试通过
应该兼容到 11.4
允许你在 SpringBoard 和少数服务中将 PC(ARM 中 IP 寄存器的版本)设置为你选择的值。
你需要运行代码,然后进入设置中的蓝牙菜单并连接一个设备。如果无效,请关闭并重新打开蓝牙。
利用起来相当烦人,但我喜欢它,所以我想做一个 POC 并在此过程中学习。
使用了 @raniXCH 的 bluetoothdPoC 代码来处理 Mach 消息的准备工作并将其发送到蓝牙服务,并加以改编以适应此 POC。
使用 jtool 查找序数和其他内容。
不得不做一些逆向工程来找到正确的消息大小。
致谢:
@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 的 POC 代码。
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 的资料第二部分。