
CVE-2018-4327용 POC
CVE-2018-4327에 대한 POC(적어도 내 생각에는 그렇다. CVE-2018-4327과 CVE-2018-4330이 @SparkZheng에 의해 모두 논의되었지만, 어느 것이 어느 버그에 해당하는지 그가 명확히 밝히지 않았기 때문에 그가 이 버그를 먼저 설명한 점을 감안해 추측한 것이다).
iPhone 6S 11.3.1에서 테스트됨
11.4까지는 작동할 것이다
SpringBoard 및 일부 서비스에서 PC(IP 레지스터에 해당하는 ARM 버전)를 원하는 값으로 설정할 수 있다. 코드를 실행한 다음 BT 설정으로 이동하여 기기에 연결해야 한다. 작동하지 않으면 BT를 껐다가 켜라.
악용하기가 꽤 번거롭지만 마음에 들어서 POC를 만들고 그 과정에서 배우고 싶었다.
Mach 메시지 준비와 BT 서비스로의 전송을 모두 처리하기 위해 @raniXCH의 bluetoothdPoC 코드를 사용했고, 이 POC에 맞게 조정했다.
ordinal 및 기타 항목을 찾기 위해 jtool을 사용했다.
올바른 메시지 크기를 찾기 위해 약간의 RE를 해야 했다.
크레딧:
@SparkZheng - DEFCON 26에서의 멋진 강연에 대해.
@raniXCH - 훌륭한 HITB 프레젠테이션과 bluetoothdPoC에 대해.
Jonathan Levin - 훌륭한 책과 jtool에 대해.
참고 자료:
http://www.newosxbook.com/tools/jtool.html - ordinal 및 기타 항목을 찾기 위해 사용한 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 자료 1부.
https://blog.zimperium.com/cve-2018-4087-poc-escaping-sandbox-misleading-bluetoothd/ - @raniXCH 자료 2부.