【转】为什么我说 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 ...
随机推荐
- Vmware出现报错The VMware Authorization Service is not running.之后无法上网解决
今天一大早开VMware,启动ubuntu时出现了报错The VMware Authorization Service is not running,服务Authorization没有运行. 这之前一 ...
- Kinect For Windows V2开发日志六:人体的轮廓的表示
Kinect中带了一种数据源,叫做BodyIndex,简单来说就是它利用深度摄像头识别出最多6个人体,并且用数据将属于人体的部分标记,将人体和背景区别开来.利用这一特性,就可以在环境中显示出人体的轮廓 ...
- poj 1695 动态规划
思路:和黑书上的跳舞机类似 #include<map> #include<set> #include<cmath> #include<queue> #i ...
- 坑到了,EF执行带事物的存储过程
用EF开发项目,今天调用 带事物 存储过程,始终报错,"EXECUTE 后的事务计数指示 BEGIN 和 COMMIT 语句的数目不匹配.上一计数 = 1,当前计数 = 0.\r\nEXEC ...
- c#抽象类相关
abstract class mylass { public int age{get;set} public abstract void SaiHi(); } 1,抽象类中可以有实例成员,也可以有抽象 ...
- Windows优化大师最新版 V7.99 Build 12.604发布
本文由 www.169it.com 收集整理 Windows优化大师是一款功能强大的系统工具软件,它提供了全面有效且简便安全的系统检测.系统优化.系统清理.系统维护四大功能模块及数个附加的工具软件.使 ...
- 关于servlet是在什么时候初始化的个人总结
今天无意中看到一个博主的总结,总结的是servlet是在什么时候初始化的,并且附上了实例.但是由于那位博主的实例有问题,所以总结的也有误.这里我把我的体会写下来,分享给大家. java代码: @Ove ...
- iOS-NSOperation多线程
NSOperation 一.简介 1.使用步骤 配合使用NSOperation和NSOperationQueue也能实现多线程编程 先将操作封装到一个NSOperation对象中 然后将NSOpera ...
- Qt 5 在Windows下 出现QApplication: No such file or directory 问题的解决办法
解决方法是:在*.pro工程项目文件中添加一行QT += widgets,然后再编译运行就OK了.
- ios固定高度禁止惯性滚动
最近测试pad改H5的项目时,固定高度的div,超出部分滚动,但在ios下滑动特别卡顿,安卓上没问题.搜索找到解决办法 固定高度的div设置超出页面滚动,ios会出现卡顿,非常不爽.通过下面css就可 ...