国内自有内核手机浏览器安全情况分析 作者:黑小子
http://www.2cto.com/uploadfile/Collfiles/20160827/20160827093252375.jpg

0x01 背景

WebView是Android系统提供能显示网页的系统控件,它是一个特殊的View,同时它也是一个ViewGroup可以有很多其他子View。在Android 4.4以下(不包含4.4)系统WebView底层实现是采用WebKit(http://www.webkit.org/)内核,出于安全和性能的考虑,在Android 4.4及其以上Google 采用了chromium(http://www.chromium.org/)作为系统WebView的底层内核支持。

在这一变化中Android 提供的WebView相关API并没有发生大变化,在4.4上也兼容低版本的API并且引进了少部分API,在目前最新Android 系统版本5.0上基于chromium 37, Webkit JavaScript引起采用WebCore Javascript, 在Android 4.4上换成了V8能直接提升JavaScript性能,但是由于Android系统使用的webview组件远远落后于chromium官方版本,导致android系统默认的webview组件存在了大量Google chrome遗留的历史安全问题,比如各种形式的UXSS以及远程代码执行漏洞

Google官方为了解决这样的问题,在Android 5.0 及其以后,Webview组件已经不再是内置不可更新的系统组件,可以直接通过Google play store下载Android System Webview安装包的形式进行更新,能在不更新Android系统的情况下,直接更新WebView内核。

Chromium编译包含了webview组件,如下图:

\

Chrome官方会不定期发布安全公告以及版本的安全更新,如下图:

\

我们随机选取了一部三星note 4手机升级到官方最新Android 5.1.1版本情况下,可以发现默认系统Android System Webview大版本是43,远远落后于官方最新版本。

\

0x02 Mobile Pwn2own 2015的 chrome远程代码执行漏洞

360手机卫士安全研究员龚广2015年Pwn2Own比赛使用的cve-2015-6764漏洞攻克了N6手机,这个漏洞是V8引擎的json序列化相关函数实现没有对数组类型进行安全的二次检查,造成了内存越界访问,龚广发表的exploit对该漏洞进行了完美的利用,可以直接通过网页javascript在内存中运行任意的so文件。

\

我们验证了一下cve-2015-6764漏洞,可以成功攻击一些使用了低版本chromium webview组件的app,运行shellcode绑定端口。测试视频如下:

0x03 国内自有内核手机浏览器漏洞

目前国内的主流浏览器APP大多数都没有使用系统的webview组件,而是使用了定制的chromium webview组件,俗称自有内核浏览器,比如QQ浏览器、UC浏览器、搜狗浏览器、百度浏览器、360浏览器。以及大规模使用了定制浏览器内核服务的APP,如微信等海量的主流APP使用了腾讯代号为X5的浏览服务。

使用了过低版本的chromium定制内核的APP会存在大量未知的UXSS漏洞

在UXSS方面,随机抽取几个自有内核手机浏览器测试发现会有大量的uxss漏洞尚未修复,如下图所示:

\

使用了过低版本的chromium定制内核的APP会存在未知的远程代码执行漏洞,如近日 “BadKernel”漏洞

近日,360手机卫士阿尔法团队再次发现Chrome V8引擎“BadKernel”漏洞。该漏洞存在于V8引擎的历史版本中,远程攻击者可利用该漏洞对使用受影响引擎的产品进行远程攻击。

通过此漏洞攻击者可实现微信远程代码执行,获取微信的完全控制权,危及用户朋友圈、好友信息、聊天记录甚至是微信钱包,可使上亿微信用户受到影响,危害巨大。由于腾讯浏览服务提供的X5 SDK中的X5 内核集成了Chrome V8引擎,该引擎受上述漏洞影响。根据腾讯浏览服务介绍,使用X5 SDK的微信、手机QQ、QQ空间、京东、58同城、搜狐视频、新浪新闻等Android手机APP均可能受该漏洞影响。

利用该漏洞在微信 Android APP上实现反弹shell的视频如下:

http://weibo.com/p/2304445bee6e775e81ad8b0486eaa519ea223b

该问题影响的版本是使用V8引擎3.20至4.2版本的厂商。影响Android 4.4.4至5.1版本系统,以及使用相关组件和定制组件的APP。

Android 5.0受影响的V8代码位置:

https://android.googlesource.com/platform/external/chromium_org/v8/+/lollipop-cts-release/src/object-observe.js#318

https://android.googlesource.com/platform/external/chromium_org/v8/+/lollipop-cts-release/src/messages.js#75

漏洞代码分别为:

1 2 throw MakeTypeError(“observe_accept_invalid”); observe_invalid_accept: [“Object.observe accept must be an array of strings.”]

在chromium浏览器v8内核4.4修复版本为:

https://chromium.googlesource.com/v8/v8.git/+/4.4.1/src/object-observe.js#274

https://chromium.googlesource.com/v8/v8.git/+/4.4.1/src/messages.js#87

修复后的代码分别为:

1 2 throw MakeTypeError(“observe_invalid_accept”); observe_invalid_accept: [“Third argument to Object.observe must be an array of strings.”],

漏洞检测代码:

1 2 3 4 5 6 7

可在微信任意聊天对话框中输入“//gettbs”(不含引号),如果tbsCoreVersion大于36555则说明该漏洞已经修复。浏览器如果访问如下网页,若能取到kMessages对象,弹出object则存在漏洞,若弹出undefined则不存在漏洞。

如受漏洞影响,请及时关注厂商发布的补丁。

在漏洞未修复前,建议用户不要点击不可信链接。

0x04 行业影响情况

通过对360显危镜数据中抽样调查,发现使用定制Chromium 自有内核的APP高达430款,其中不乏用户量过亿的主流APP,安全风险主要分布行业如下:

请使用定制Chromium自有内核的厂商注意排查和修复安全漏洞。使用了相关浏览服务的厂商关注官方的安全升级,避免产品出现安全隐患。

\
2017.01.11
来源:www.antivirus-china.org.cn
0
热门推荐 更多
热点新闻 更多