
关于 CVE-2021-30862 的技术分析与概念验证,这是 iOS iTunes U 中的一个一键远程代码执行(RCE)漏洞。
2021年,CodeColorist 发布了关于 Mistuned 漏洞 的分析文章,这是一系列影响 iTunes Store 的漏洞,可实现一键远程代码执行。值得注意的是,他演示了仅通过一个逻辑错误即可弹出计算器,而无需任何内存损坏。在此期间,我一直在调查各种应用中的 URL 方案,因为两年前我曾报告过 一个关于 App Store 的 itms-services:// URL 方案的安全问题。我发现一个非常相似的 URL 方案是 iTunes U 的 itms-itunesu:// URL 方案。当时,我并不知道它接受用户提供的输入,以为它只用于打开应用,但后来发现并非如此。
阅读他的文章时,有一件事特别引起了我的注意:Jung Hoon Lee 在 Pwn2Own 2014 期间使用 itmss:// 进行的沙箱逃逸。当时,iTunes Store 接受任意 URL,并会将其加载到它的 SUWebView 中,即使它们不是来自 Apple(CVE-2014-8840)。此时,你可能已经猜到我的方向。我注意到 itmss:// 与 iTunes U 的 URL 方案非常相似,所以我决定看看 iTunes U 是否会将 google.com 加载到它的 Web 视图中。果然,它这么做了。然后我决定尝试使用与 Mistuned 漏洞相同的 iTunes API,试图弹出计算器,完全没指望它能成功,但令我大吃一惊的是,它竟然成功了。事实证明,iTunes Store 和 iTunes U 共享同一个 API。那么 Mistuned 中的 UAF 呢?它也存在于 iTunes U 中吗?结果发现同样存在,我能够通过双重释放内存(POC_6.html)创建一个使 iTunes U 崩溃的概念验证。我附上了一些我发送给 Apple 的 PoC,以及一个尝试利用此漏洞实现的 fakeobj/addrof 原语(位于 main.js 中,借助 Mistuned 的分析文章),不过如果我没记错的话,我并未完全让 fakeobj 原语正常工作。你可以阅读 CodeColorist 的分析文章以获取关于这些漏洞影响的更多信息,但简而言之,它们允许从受害者那里获取大量敏感数据,并可能实现一键 RCE。