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。

  1. 正常用户==request==> http://wooyun.org
  2. http://wooyun.org ==script exec ==>  uxss.js
  3. uxss.js ==bypass SOP==> http://zhihu.com
  4. done,session get!

不只是浏览器,还包括 微信、QQ、微博等所有涉及网页浏览的应用。

上面这个漏洞,可以直接在任意一个网页中插入上面漏洞的代码,发给好友 URL,就可以获得她的QQ权限。

再看来这个,是浏览器的,平时我们会使用手机浏览器登陆很多网站,这样更有利于攻击,可以直接一次攻击获得你所有登陆过的网站的身份。

还有很多,这些都是由于 webkit 版本低造成的。

不关我事

说了这么久危害,再来说说厂商的态度。

有生命力的漏洞往往处于灰色地带,什么意思呢?

简单说来就是‘推卸责任’,在这个案例里还好只是单向的,要归责任大多确实归  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 很糟糕的更多相关文章

  1. 收藏的Android很好用的组件或者框架。

    收藏的Android很好用的组件或者框架. android框架  先说两个站点: http://www.androidviews.net/ 非常好的国外开源码站,就是訪问速度有点慢啊 http://w ...

  2. 分享几个Android很强势的的开源框架

    前言 今天介绍一下android开发者中比较热门的开源代码,这些代码绝大多数可以直接应用到项目中.更多可参考很值得收藏的安卓开源控件库 一个强大的图片选择器,支持多选,和选聘选择 项目地址: http ...

  3. Android中糟糕的AsyncTask

    上周做一个Android中的帧动画,因为每帧图片都比较大,所以采用每次读取一帧,延时再读取下一帧的方式实现.在读取的时候,采用AsyncTask,去设置ImageView的背景.但是发现需要切换帧动画 ...

  4. android 很详细的序列化过程Parcelable

    直接上代码:注释都写的很清楚了. public class Entry implements Parcelable{ public int userID; public String username ...

  5. CSDN的验证码,真得很糟糕

    这是以三种不同的高度来分割各字符 第一张图片是以宽度3来分割,可以看得出,验证码元素保存完好,但 Y 和 9 仍然连在一起 第二张图片是以宽度4来分割,看到了,N已经断了,肉眼虽然仍看得出来是N,但是 ...

  6. Android线程管理之ThreadLocal理解及应用场景

    前言: 最近在学习总结Android的动画效果,当学到Android属性动画的时候大致看了下源代码,里面的AnimationHandler存取使用了ThreadLocal,激起了我很大的好奇心以及兴趣 ...

  7. android快捷开发之Retrofit网络加载框架的简单使用

    大家都知道,安卓最大的特点就是开源化,这自然会产生很多十分好用的第三方API,而基本每一个APP都会与网络操作和缓存处理机制打交道,当然,你可以自己通过HttpUrlConnection再通过返回数据 ...

  8. 对Android开发者有益的40条优化建议

    下面是开始Android编程的好方法: 找一些与你想做事情类似的代码 调整它,尝试让它做你像做的事情 经历问题 使用StackOverflow解决问题 对每个你像添加的特征重复上述过程.这种方法能够激 ...

  9. Google Developing for Android 二 - Memory 最佳实践 // lightSky‘Blog

    Google Developing for Android 二 - Memory 最佳实践   |   分类于 Android最佳实践 原文:Developing for Android, II Th ...

随机推荐

  1. xml格式化成json

    JsonConvert.SerializeObject(model)   XmlDocument doc = new XmlDocument();                    doc.Loa ...

  2. linux和Windows下文本格式转换

    1.安装转换工具:sudo apt-get install tofrodos 2.开始转换:fromdos grade.sh

  3. H5入门-xhtml+css2-第01节

    <!-- 声明版本号,DOCTYPE html是html5版本 --> <!DOCTYPE html> <!-- 声明网页语言 en-英文 zh-中文 zh-cn中文 - ...

  4. 会话—session

    这篇随笔是上一篇的姊妹篇@_@! session       在WEB开发中,服务器可以为每个用户浏览器创建一个会话对象(session对象),注意:一个浏览器独占一个session对象(默认情况下) ...

  5. jQuery之选择器

    jQuery元素选择器和属性选择器允许您通过标签名.属性名或内容对 HTML 元素进行选择和操作,而在 HTML DOM中,选择器可以对DOM元素组或单个DOM 节点进行操作.通俗点说,选择器的作用就 ...

  6. Sql server For XML Path 学习

    最近看到太多人问这种问题   自己也不太了解  就在网上学习学习 自己测试一番 CREATE TABLE test0621 (id INT,NAME NVARCHAR(max)) INSERT tes ...

  7. 百度网页搜索部来自Console的招聘信息

    百度网页搜索部来自Console的招聘信息,小伙伴们,你发现了吗?

  8. WPF非UI线程获取修改控件属性值的方法

    public class InvokeHelper { #region delegates private delegate object MethodInvoker(Control control, ...

  9. (js有关图片加载问题)dom加载完和onload事件

    引用旺旺的话...哈哈哈DOMContentLoaded事件表示页面的DOM结构绘制完成了,这时候外部资源(带src属性的)还没有加载完.而onload事件是等外部资源都加载完了就触发的.$.read ...

  10. 在浏览器中打开本地应用(iOS)

    在浏览器中点击跳转到本地应用的方法(如果本地没有安装的话) 然后在浏览器中输入tianxiang://就能打开这个应用了 ................省略 遇到一个12年还是初中的小朋友,