这个是今年我在KCON 2016上的演讲题目,这个漏洞我最早在今年的4月份报告给了苹果公司一直没有得到修复进度等反馈。在刚刚发布的iOS 10里已经不受这个漏洞影响了,所以这里直接把细节再次和大家一起分享一下。
这个漏洞主要是在 iOS 对于 URL Scheme 及其在 UIWebView 等控件的自动诊断识别等处理机制下导致跨应用XSS漏洞。
iOS下的URLScheme存在几个特点:
我们先看第2点的具体处理机制“UIWebView的Detection Links属性识别为链接”,也就是说你输入的任何 URL Scheme 连接都会被解析 html 里的 a 标签的调用:
scheme:// —> <a … href="scheme://"> … </a >
对XSS漏洞很熟悉的同学,很可能就会想到2个方向:
javascript://
伪协议执行js在主流的浏览器内核有2种方法调用,最常见的方法:
<a href='javascript:alert(1)'>n0tr00t security team</a>
还有另外一种格式方法很少有人正规使用:
<a href='javascript://%0a%0dalert(1)'>n0tr00t security team</a>
注意:与://的区别,也就是这种非常见的方式导致了很多程序的漏洞,比如前面曝光的 iMessage 的XSS漏洞(CVE-2016-1764)。
所以这个“BadURLScheme”就是 javascript 了,我们回到前面提到的iOS下的URLScheme的第一个特点,当用户安装了一个注册了 javascript 这个 URL Scheme 的任意 app 后,如果其他的app里使用了 UIWebView 并且设置了 Detection Links 属性识别,那么在这些app里输入文本内容:
javascript://%0a%0dalert(1)
会被 Detection Links 属性解析为 <a>
调用:
<a dir="ltr" href="javascript://%0a%0dalert(1)" x-apple-data-detectors="true" x-apple-data-detectors-type="link" x-apple-data-detectors-result="5">javascript://%0a%0dalert(1)</a>
成而导致这些app的XSS漏洞。
要触发漏洞需要满足2个条件:首先用户需要下载安装一个注册了 javascript 这个 URL Scheme 的app [只要求安装就行],一般的方法主要攻击者写一注册了 javascript 这个 URL Scheme 的app利用短信、微信等社会工程学手段引诱用户下载安装,另外的方法就是现有app市场上有对应注册了javascript这个 URL Scheme 的app,实际上这种案列也是有的,比如:
Maxthon Cloud Web Browser - Best Internet Explore Experience by Maxthon Technology Limited (https://itunes.apple.com/cn/app/maxthon-cloud-web-browser/id541052011?l=en&mt=8)
也就是安装了 Maxthon 浏览器的用户很可能会受到影响。另外一个条件就是需要被攻击的app使用 UIWebView 并且设置了 Detection Links 属性,在我们实际中发现满足这一条件的app是非常多的,比如:微信(已修复)、QQ邮箱(已修复)、outlook、印象笔记、知乎等。
http://v.qq.com/x/page/x0328nwv6ju.html
在这个漏洞发现只是其实存在很多疑惑的对方:“A系统上安装了B家的软件导致了C家软件被攻击,请问这个是谁家的漏洞?应该报告给谁?”经过分析后 我认为是iOS的漏洞,对于Maxthon来说他也算是正规使用URL Scheme,对于那些受影响比较大的C们我还是选择了同时报告。
product-security@apple.com
,4.15 收到邮件确认收到报告,后续没有收到任何关于漏洞的修复计划。【via@n0tr00t Security Team】