
POC para CVE-2018-4327
POC para CVE-2018-4327 (pelo menos é o que acho, já que CVE-2018-4327 e CVE-2018-4330 foram ambos discutidos por @SparkZheng, mas não está claro qual deles corresponde a qual bug; como ele descreveu este primeiro, estou fazendo uma suposição).
Testado no iPhone 6S 11.3.1
Deve funcionar até o 11.4
Permite que você defina o PC (a versão do ARM do registrador IP) para um valor de sua escolha no SpringBoard e em alguns serviços. Você precisa executar o código e depois ir para as configurações de BT e conectar a um dispositivo. Se não funcionar, desligue e ligue o BT.
É bem chato de explorar, mas eu gostei, então quis fazer um POC e aprender no caminho.
Usei o código do bluetoothdPoC do @raniXCH para lidar com toda a preparação da mensagem Mach e o envio dela para o serviço de BT e o adaptei para caber neste POC.
Usei o jtool para encontrar o ordinal e outras coisas.
Tive que fazer um pouco de engenharia reversa para encontrar os tamanhos corretos das mensagens.
créditos:
@SparkZheng - pela palestra incrível na DEFCON 26.
@raniXCH - pela excelente apresentação no 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 do 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.