
CVE-2018-4330 POC для iOS
Связан с brokentooth (ссылка ниже).
В отличие от brokentooth, toothfairy не требует нажатия кнопок в меню bluetooth.
Обе CVE были раскрыты @SparkZheng, но без POC, поэтому я решил сделать POC для получения опыта.
Код не идеален, но он выполняет свою задачу.
Протестировано на iPhone 6S 11.3.1
Должно работать до 11.4
Позволяет установить PC (версия регистра IP для ARM) на выбранное вами значение в bluetoothd и некоторых других службах.
Использовал код @raniXCH bluetoothdPoC для обработки всей подготовки Mach-сообщения и его отправки в BT-сервис, а также адаптировал его под этот 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 — POC-код @raniXCH.
https://gsec.hitb.org/materials/sg2018/D2%20-%20The%20Road%20to%20iOS%20Sandbox%20Escape%20-%20Rani%20Idan.pdf — материалы @raniXCH, часть 1.
https://blog.zimperium.com/cve-2018-4087-poc-escaping-sandbox-misleading-bluetoothd/ — материалы @raniXCH, часть 2.
https://github.com/omerporze/brokentooth — мой POC для CVE-2018-4327.