【转】为什么我说 Android 很糟糕
http://zhuanlan.zhihu.com/wooyun/19879016
Android 的安全问题一直被吐槽,包括不安全的APP市场、上次的远程命令执行漏洞、还有它的权限机制,总之一团糟,这些还是可以忍的,APP市场总是在规范化,大的漏洞很快就会被应急,权限问题也在慢慢改善。
今天要说的是一个 Android 下很有生命力的漏洞,刚刚提到的远程命里执行漏洞也是把所有涉及到浏览器的应用给走了一遍,包括 QQ、微博、UC浏览器,这次要说的也是关于浏览器的漏洞,叫 UXSS。
首先科普下 UXSS 和 WebView
通俗的说下
- UXSS:当你访问 A 网站的时候A网站可以跨域获取你在 B 网站的一切信息。
- WebView:安卓浏览器的浏览器组件,做网页展示都需要用到它。
他们是什么关系呢?
Webview 的底层的是 webkit,但是是比较老的 webkit。
这就出现一个问题, 大家用老版本的东西的时候可能是想着稳定性,还要注意一点的就是安全性,漏洞补丁往往是随着应用升级一起发布的。
老版本的 webkit 存在大量的已披露 UXSS 漏洞(即 POC 公开)。
再说说 UXSS 的攻击流程
正常情况下我们会访问各种各样的网站,比如我常上的网站是知乎和乌云。
如果有一天,邪恶的剑心想通过 UXSS 漏洞攻击我的知乎账户,那么他只要在乌云的网站中插入一段 JS 执行 UXSS 漏洞代码即可劫持我知乎账户的 session。
- 正常用户==request==> http://wooyun.org
- http://wooyun.org ==script exec ==> uxss.js
- uxss.js ==bypass SOP==> http://zhihu.com
- done,session get!
不只是浏览器,还包括 微信、QQ、微博等所有涉及网页浏览的应用。
上面这个漏洞,可以直接在任意一个网页中插入上面漏洞的代码,发给好友 URL,就可以获得她的QQ权限。
再看来这个,是浏览器的,平时我们会使用手机浏览器登陆很多网站,这样更有利于攻击,可以直接一次攻击获得你所有登陆过的网站的身份。
还有很多,这些都是由于 webkit 版本低造成的。
- 猎豹/360/欧鹏/百度/遨游等手机浏览器安卓客户端UXSS(影响android4.4以下版本)
- 各大手机浏览器厂商存在UXSS绕过漏洞合集
- 猎豹/360/搜狗/百度/遨游等手机浏览器安卓客户端SOP绕过漏洞(UXSS,可窃取cookie等)
不关我事
说了这么久危害,再来说说厂商的态度。
有生命力的漏洞往往处于灰色地带,什么意思呢?
简单说来就是‘推卸责任’,在这个案例里还好只是单向的,要归责任大多确实归 Android,但由于Android版本混乱,且这块不身不太重视,缺少猥琐流团队的支持,如果 APP 不主要防御的话很长段时间内都存在很大的危害。
引用某厂商对此漏洞的回应:
非常感谢您的报告,此问题属于android webkit的漏洞,请尽量使用最新版的android系统。
的确漏洞产生的原因是因为 kitkat(android 4.4)之前 webview 组件使用 webkit 内核而遗留的漏洞。使用最新的 android 系统当然安全性要更高而且运行更流畅,但是有多少人能升级或者使用到相对安全的 android 版本了。
下图来自谷歌官方 2014.09.09 的统计数据:
看起来情况不是太糟糕,有 24.5% 的 android 用户是处于相对安全的版本下。但是官方数据的是来 Google play 明显和大陆水土不服。国内就只能使用相对靠谱的本土第三方统计了。
下图是 Umeng 八月的统计情况:
能使用到相对安全的 android 系统的用户不到 8%,那么问题来了~我要换一个什么的样的手机了。忘记我是个屌丝了,破手机无法升级到 kitkat 也没钱换手机。那就只能选择使用相对安全的应用来尽量避免我受到攻击。
Talk is cheap
我们收集了一些命中率较高的 POC 来验证到底哪些app更靠谱一些。
下图为360浏览器在 android 4.2.2 下的测试结果
下图为搜狗浏览器在 android 4.4.3 下的测试结果
我们对主流手机浏览器进行了横向对比,测试对象包括:UC浏览器、搜狗浏览器、百度浏览器、360安全浏览器、欧鹏浏览器、遨游云浏览器、猎豹浏览器。
测试结果:
你觉得如何?
感谢 瘦蛟舞@wooyun 做的测试与数据,想了解更多技术细节的可以看:Android UXSS阶段性小结及自动化测试 和 茄子在乌云峰会上的议题 RAyH4c(茄子)《细数安卓WebView的那些神洞》。