蒸米是阿里巴巴的移动安全工程师,香港中文大学博士,也是发现并命名了XcodeGhost的人。这次他所在的iOS安全小组发现了影响最新版iOS 9.3的0day漏洞。此漏洞杀伤力巨大,在非越狱手机上一个app应用可以利用这个漏洞做到读取或者修改沙盒外其他app的文件(照片,聊天记录等)。
蒸米并未利用此漏洞牟利,而是先公开DEMO,然后再提交给苹果,然后再一点点介绍技术细节。等最终完整的技术细节出来的时候,这个漏洞应该已经无法有什么实质性的危害了。
这,就是一个「白帽子」的职业操守和理想。
感谢蒸米的分享和授权,本文的所有打赏归蒸米所有,以下是文章正文。
在这里我还是要推荐下我自己建的iOS开发学习群:680565220,群里都是学ios开发的,如果你正在学习ios ,小编欢迎你加入,今天分享的这个案例已经上传到群文件,大家都是软件开发党,不定期分享干货(只有iOS软件开发相关的),包括我自己整理的一份2018最新的iOS进阶资料和高级开发教程
0x00 序
冰指的是用户态,火指的是内核态。如何突破像冰箱一样的用户态沙盒最终到达并控制如火焰一般燃烧的内核就是《iOS 冰与火之歌》这一系列文章将要讲述的内容。这次给大家带来的是利用 XPC 突破 app 沙盒,并控制其他进程的 pc(program counter)执行 system 指令。
《iOS 冰与火之歌》系列的目录如下:
App Hook 答疑以及 iOS 9 砸壳(番外篇)
利用 XPC 过 App 沙盒
█████████████
另外文中涉及代码可在我的 github 下载:
https://github.com/zhengmin1989/iOS_ICE_AND_FIRE
0x01 什么是 XPC
在 iOS 上有很多 IPC(内部进程通讯) 的方法,最简单最常见的 IPC 就是 URL Schemes,也就是 app 之间互相调起并且传送简单字符的一种机制。比如我用[[UIApplication sharedApplication] openURL:url]
这个 api 再配合 “alipay://
“, “wechat://
” 等 url,就可以调起支付宝或者微信。
今天要讲的 XPC 比 URLScheme 要稍微复杂一点。XPC 也是 iOS IPC 的一种,通过 XPC,app 可以与一些系统服务进行通讯,并且这些系统服务一般都是在沙盒外的,如果我们可以通过 IPC 控制这些服务的话,也就成功的做到沙盒逃逸了。App 在沙盒内可以通过 XPC 访问的服务大概有三四十个,数量还是非常多的。
想要与这些 XPC 服务通讯我们需要创建一个 XPC client,传输的内容要与 XPC service 接收的内容对应上,比如系统服务可能会开这样一个 XPC service: