【转】为什么我说 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的那些神洞》。
【转】为什么我说 Android 很糟糕的更多相关文章
- 收藏的Android很好用的组件或者框架。
收藏的Android很好用的组件或者框架. android框架 先说两个站点: http://www.androidviews.net/ 非常好的国外开源码站,就是訪问速度有点慢啊 http://w ...
- 分享几个Android很强势的的开源框架
前言 今天介绍一下android开发者中比较热门的开源代码,这些代码绝大多数可以直接应用到项目中.更多可参考很值得收藏的安卓开源控件库 一个强大的图片选择器,支持多选,和选聘选择 项目地址: http ...
- Android中糟糕的AsyncTask
上周做一个Android中的帧动画,因为每帧图片都比较大,所以采用每次读取一帧,延时再读取下一帧的方式实现.在读取的时候,采用AsyncTask,去设置ImageView的背景.但是发现需要切换帧动画 ...
- android 很详细的序列化过程Parcelable
直接上代码:注释都写的很清楚了. public class Entry implements Parcelable{ public int userID; public String username ...
- CSDN的验证码,真得很糟糕
这是以三种不同的高度来分割各字符 第一张图片是以宽度3来分割,可以看得出,验证码元素保存完好,但 Y 和 9 仍然连在一起 第二张图片是以宽度4来分割,看到了,N已经断了,肉眼虽然仍看得出来是N,但是 ...
- Android线程管理之ThreadLocal理解及应用场景
前言: 最近在学习总结Android的动画效果,当学到Android属性动画的时候大致看了下源代码,里面的AnimationHandler存取使用了ThreadLocal,激起了我很大的好奇心以及兴趣 ...
- android快捷开发之Retrofit网络加载框架的简单使用
大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...
- 对Android开发者有益的40条优化建议
下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...
- Google Developing for Android 二 - Memory 最佳实践 // lightSky‘Blog
Google Developing for Android 二 - Memory 最佳实践 | 分类于 Android最佳实践 原文:Developing for Android, II Th ...
随机推荐
- IOS 中frame与bounds的区别
文章摘要:http://www.sendong.com/news1733.html bounds是指这个view在它自己坐标系的坐标和大小 而frame指的是这个view在它superview的坐标系 ...
- (六)u-boot2013.01.01 for TQ210:《精简u-boot文件目录,定制自己的目标板》
1. 删改U-boot代码结构 把不用到的和与我们s5pv210移植无关的硬件平台代码统统删除,眼不见为净.这样代码看起来就干净利落多了. 1.1.进入arch目录,删掉除arm以外的目录 处理前: ...
- 【WinAPI】Windows Message 枚举常量收集
namespace WindowsUtilities { public enum WindowsMessages : int { WM_NULL = 0x0000, WM_CREATE = 0x000 ...
- pxe+kickstart实现无人值守批量安装linux
pxe+kickstart实现无人值守批量安装linux 实验准备:主机myrhel2作为服务器端,新建一个没有安装操作系统的虚拟主机,而且其与服务器端在同一个网段 安装的条件: 服务器端: ...
- vc如何编译链接opengl库
强烈推荐的一篇强大的OpenGl学习博文OpenGL入门学习 vc2012如何链接opengl库? 首先,我们需要下载opengl的库文件,http://pan.baidu.com/s/1kTsjkZ ...
- 转 【O2O案例】汽车后市场垂直化电子商务:平业模式解析
核心提示:一.商业模式简介.汽车后市场垂直化电子商务是我在2010年初开始筹划,起因是在淘宝工作期间运营汽车类目后遇到很多问题无决,由于 一.商业模式简介. 汽车后市场垂直化电子商务是我在2010年初 ...
- .net导出Word的一种方法
由于ActiveX控件只支持IE(好像FF可以通过安装插件支持),所以js导出word的方式就比较局限 可是如果当页面经过js修改以后,.net是无法获取到的,所以要通过js获取到最新的html并传给 ...
- dedecms5.7文章实现阅读全文功能二次开发
阅读全文功能其实在很多的流行站点都有的,比如网易,新浪等,随着文章内容的增加,当一个页面有多个分页的时候,就会显示出这个“在本页阅读全文”的链接,点击这个链接之后,出现的,将是这篇文章以没有分页出现的 ...
- c# list排序
List<int> tmp = new List<int>(){5,1,22,11,4}; 升序:tmp.Sort((x, y) => x.CompareTo(y)); ...
- OC3-xml文件解析
<?xml version="1.0"?> <xml_api_reply version="1"> <cities> < ...