首页 > 安全 > 系统安全 >

Google Chrome V8漏洞技术分析与防护方案

2016-08-27

Google Chrome V8引擎3 20至4 2版本中存在远程代码执行漏洞,该漏洞是由于源代码中observe_accept_invalid异常类型被误写为observe_invalid_accept。Google Chrome V8漏洞技术分析与防护方案。

Google Chrome V8引擎3.20至4.2版本中存在远程代码执行漏洞,该漏洞是由于源代码中“observe_accept_invalid”异常类型被误写为“observe_invalid_accept”。攻击者可利用该漏洞造成kMessages关键对象信息泄露,执行任意代码。基于Android 4.4.4至5.1版本系统的WebView控件开发的手机APP均可能受上述漏洞影响。

其中的漏洞信息列表如下:

CNNVD_ID 级别 描述 CNNVD-201608-414 严重 源代码中“observe_accept_invalid”异常类型被误写导致远程代码执行

详情见如下地址:

http://www.cnnvd.org.cn/vulnerability/show/cv_cnnvdid/CNNVD-201608-414

什么是Google Chrome V8引擎?

Google V8 JavaScript Engine是美国谷歌(Google)公司为Chrome浏览器开发的一套开源JavaScript引擎。V8在运行之前将JavaScript编译成了机器码,而非字节码或是解释执行它,以此提升性能。更进一步,使用了如内联缓存(inline caching)等方法来提高性能。有了这些功能,JavaScript程序与V8引擎的速度媲美二进制编译。

影响的版本 Google Chrome JavaScript V8 引擎 3.20-4.2。 Android 4.4.4-5.1上使用WebView控件所开发的APP。不受影响的版本 Google Chrome JavaScript V8引擎 > 4.2。漏洞分析

V8是一个Google开发的开源高性能JavaScript引擎。V8其内置机制将底层native的对象或代码暴露给上层JavaScript代码,供其访问调用,从而提供效率。本次BadKernel漏洞,存在于ConvertAcceptListToTypeMap函数。该函数代码见以下地址:http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/object-observe.js#ConvertAcceptListToTypeMap。

V8-1

在MakeTypeError时,作者错误使用“observe_accept_invalid”。在http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/messages.js#75中可以看到并没有定义“observe_accept_invalid”,而是定义了“observe_invalid_accept”。

V8-2

因此,攻击者可以通过精巧的内存控制,通过此漏洞调用对象的observe方法实现信息泄露,进而实现任意代码执行。

此漏洞的调用流程:

1.JavaScript代码调用对象的observe方法,Object.observe()

2.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/bootstrapper.cc#1633

V8-3

3.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/object-observe.js#375

V8-4

4.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/object-observe.js#ConvertAcceptListToTypeMap

V8-5

5.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/messages.js#323

6.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/messages.js#MakeGenericError

7.http://androidxref.com/5.0.0_r2/xref/external/chromium_org/v8/src/messages.js#FormatMessage

V8-6

检测方法

用户可以通过访问包含如下JavaScript代码的html页面,判断自身的V8版本是否存在此漏洞。

1 2 3 4 5 6 7 8 9 10 11 12 13防护方案

1.受影响的厂商,尽快升级V8版本至4.2以上版本。

2.对于暂时因各种原因无法升级的厂商,将ConvertAcceptListToTypeMap函数中observe_accept_invalid修改为observe_invalid_accept,并重新编译V8至自身APP内,推送APP升级。

3.绿盟科技免费检测。

请用安卓手机端安装的各浏览器逐一访问如下链接或扫描二维码进行漏洞检测。https://cloud.nsfocus.com/krosa/views/weixin_h5/webkitloophole.html

相关文章
最新文章
热点推荐