
CVE-2018-4330 POC for iOS
Relacionado ao brokentooth (link abaixo).
Ao contrário do brokentooth, o toothfairy não exige pressionar botões no menu bluetooth.
Ambos os CVEs foram revelados por @SparkZheng, mas sem POC, então decidi fazer um POC para aprendizado.
O código não é perfeito, mas cumpre o propósito.
Testado no iPhone 6S 11.3.1
Deve funcionar até o 11.4
Permite definir o PC (versão ARM do registrador IP) para um valor de sua escolha no bluetoothd e em alguns outros serviços.
Usei o código bluetoothdPoC do @raniXCH para lidar com toda a preparação da mensagem Mach e o envio dela ao serviço BT e o adaptei para se encaixar neste POC.
Usei o jtool para encontrar o ordinal e outras coisas.
Precisei fazer um pouco de RE para encontrar os tamanhos corretos das mensagens.
créditos:
@SparkZheng - pela sua excelente palestra na DEFCON 26.
@raniXCH - pela excelente apresentação na HITB e pelo bluetoothdPoC.
Jonathan Levin - pelo ótimo livro e pelo jtool.
referências:
http://www.newosxbook.com/tools/jtool.html - jtool que usei para encontrar o ordinal e outras coisas.
https://www.weibo.com/ttarticle/p/show?id=2309404271293301154324 - material do @SparkZheng.
https://github.com/rani-i/bluetoothdPoC - código POC do @raniXCH.
https://gsec.hitb.org/materials/sg2018/D2%20-%20The%20Road%20to%20iOS%20Sandbox%20Escape%20-%20Rani%20Idan.pdf - material do @raniXCH parte 1.
https://blog.zimperium.com/cve-2018-4087-poc-escaping-sandbox-misleading-bluetoothd/ - material do @raniXCH parte 2.
https://github.com/omerporze/brokentooth - meu POC para CVE-2018-4327.