尝试从 launchd 与 task_t 指针窃取内核凭据(基于:CVE-2017-7047)
Triple Fetch 是针对 iOS 10.3.3 之前 iOS 设备的漏洞利用。 它利用了 libxpc 中的一个逻辑错误,允许攻击者发送带有由共享内存支持的 xpc_data 对象的恶意消息。
原始漏洞利用针对的是 iOS 上使用 NSXPC 的底层守护进程。CoreAuthenticationd。 该漏洞利用会修补 AMFID 以允许任意代码执行,同时还会获取 launchd 的发送权(send_right),使我们能够执行 task_for_pid 1。 这让我们获得系统中最低层守护进程 launchd 的完全权限。
由于该漏洞利用已附带一个名为 hello_world 的示例,用于使用 launchd 任务并借助内存区域(读/写/执行)来转储 launchd 的内存。 实现以下目标并不困难:
由于该漏洞利用直接从用户空间运行,并且无需修补内核即可获得 root 权限,因此它可以完美用于越狱目的。然而,由于该漏洞是一个竞态条件,且似乎很少能正确触发,用户将需要多次重启并重试,才能再次成功越狱。
如果您想向该仓库贡献代码,随时可以创建拉取请求(pull request)。 我们将添加一个包含大量未来内核修补所需偏移量的文件。 我们将致力于编写能够帮助窃取 launchd 内核凭据的代码。
利用 Apple 的 VoIP API,我们将尝试让该漏洞利用在每次重启后在后台自动运行。 应用程序中将添加一个精美的设置包(settings bundle),以便您可以从“设置”应用中设置 bootNonce,用于将来的降级目的。 将添加一个开关,用于禁用和启用 OTA 更新。 将添加使用 cron 作业自动保存 SHSH2-blob 的代码。 我将尽最大努力将 Tor 集成到越狱中,并可在“设置”中切换,因为每个人都需要自己的隐私。 为了好玩,还添加了一个内容拦截器,用来去除 Safari 中烦人的广告。