android 4.4.2 安全漏洞修复

环境:android 4.4.2

漏洞扫描工具:360vulscanner_offical.apk  360透视镜

解决的漏洞:CVE-2015-6764   CVE-2016-1677  CVE-2016-3897   CVE-2016-2439

 

1.CVE-2015-6764

Google Chrome是美国谷歌(Google)公司开发的一款Web浏览器。Google V8是其中的一套开源JavaScript引擎。

Google Chrome 47.0.2526.73之前版本中使用的Google V8的JSON stringifier中的json-stringifier.h文件中的‘BasicJsonStringifier::SerializeJSArray’函数存在安全漏洞,该漏洞源于程序没有正确加载数组元素。远程攻击者可借助特制的JavaScript代码利用该漏洞造成拒绝服务(越边界数组访问)。

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:

http://googlechromereleases.blogspot.com/2015/12/stable-channel-update.html

diff --git a/external/chromium_org/v8/src/json-stringifier.h b/external/chromium_org/v8/src/json-stringifier.h
index ebfaf99..49377b1 100644
--- a/external/chromium_org/v8/src/json-stringifier.h
+++ b/external/chromium_org/v8/src/json-stringifier.h
@@ -138,7 +138,9 @@ class BasicJsonStringifier BASE_EMBEDDED {
   INLINE(Result SerializeJSArray(Handle<JSArray> object));
   INLINE(Result SerializeJSObject(Handle<JSObject> object));
 
-  Result SerializeJSArraySlow(Handle<JSArray> object, int length);
+  //Result SerializeJSArraySlow(Handle<JSArray> object, int length);
+  //CVE-2015-6764
+  Result SerializeJSArraySlow(Handle<JSArray> object, uint32_t start, uint32_t length);
 
   void SerializeString(Handle<String> object);
 
@@ -563,14 +565,24 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArray(
       break;
     }
     case FAST_ELEMENTS: {
-      Handle<FixedArray> elements(
-          FixedArray::cast(object->elements()), isolate_);
+      //Handle<FixedArray> elements(
+          //FixedArray::cast(object->elements()), isolate_);
+      Handle<Object> old_length(object->length(), isolate_); //CVE-2015-6764
       for (int i = 0; i < length; i++) {
+        //CVE-2015-6764        
+        if (object->length() != *old_length 
+                       ||object->GetElementsKind() != FAST_ELEMENTS) {
+            Result result = SerializeJSArraySlow(object, i, length);
+            if (result != SUCCESS) return result;
+            break;
+        }
+               
         if (i > 0) Append(',');
-        Result result =
-            SerializeElement(isolate_,
-                             Handle<Object>(elements->get(i), isolate_),
-                             i);
+        Result result = SerializeElement(isolate_,
+                       Handle<Object>(FixedArray::cast(object->elements())->get(i),
+                       isolate_),
+                       i);
+               
         if (result == SUCCESS) continue;
         if (result == UNCHANGED) {
           AppendAscii("null");
@@ -584,7 +596,7 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArray(
     // They resemble the non-holey cases except that a prototype chain lookup
     // is necessary for holes.
     default: {
-      Result result = SerializeJSArraySlow(object, length);
+      Result result = SerializeJSArraySlow(object, 0, length);
       if (result != SUCCESS) return result;
       break;
     }
@@ -597,8 +609,8 @@ BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArray(
 
 
 BasicJsonStringifier::Result BasicJsonStringifier::SerializeJSArraySlow(
-    Handle<JSArray> object, int length) {
-  for (int i = 0; i < length; i++) {
+    Handle<JSArray> object, uint32_t start, uint32_t length) {
+  for (uint32_t i = start; i < length; i++) {//CVE-2015-6764
     if (i > 0) Append(',');
     Handle<Object> element = Object::GetElement(object, i);
     RETURN_IF_EMPTY_HANDLE_VALUE(isolate_, element, EXCEPTION);

2.CVE-2016-1677

Google Chrome是美国谷歌(Google)公司开发的一款Web浏览器。Google V8是其中的一套开源JavaScript引擎。

Google Chrome 51.0.2704.63之前的版本使用的Google V8 5.1.281.26之前版本中的uri.js文件存在安全漏洞,该漏洞源于程序使用错误的数组类型。远程攻击者可通过调用‘decodeURI’函数利用该漏洞获取敏感信息。

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:

https://source.android.com/security/bulletin/2016-05-01.html

diff --git a/external/chromium_org/v8/src/uri.js b/external/chromium_org/v8/src/uri.js
index 4e3f084..c6a1334 100644
--- a/external/chromium_org/v8/src/uri.js
+++ b/external/chromium_org/v8/src/uri.js
@@ -254,7 +254,8 @@ function Decode(uri, reserved) {
         var n = 0;
         while (((cc << ++n) & 0x80) != 0) { }
         if (n == 1 || n > 4) throw new $URIError("URI malformed");
-        var octets = new $Array(n);
+        //var octets = new $Array(n);
+        var octets = new InternalArray(n); // CVE-2016-1677
         octets[0] = cc;
         if (k + 3 * (n - 1) >= uriLength) throw new $URIError("URI malformed");
         for (var i = 1; i < n; i++) {

3.CVE-2016-3897

Android是美国谷歌(Google)公司和开放手持设备联盟(简称OHA)共同开发的一套以Linux为基础的开源操作系统。Wi-Fi是其中的一个无线连接组件。

Android Wi-Fi中的net/wifi/WifiEnterpriseConfig.java文件中的WifiEnterpriseConfig类存在信息泄露漏洞,该漏洞源于toString方法调用的‘return'值包含密码。攻击者可借助特制的应用程序利用该漏洞获取敏感信息。以下版本受到影响:Android 4.4.4之前的4.x版本,5.0.2之前的5.0.x版本,5.1.1之前的5.1.x版本,2016-09-01之前的6.x版本。

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:

http://source.android.com/security/bulletin/2016-09-01.html

diff --git a/frameworks/base/wifi/java/android/net/wifi/WifiEnterpriseConfig.java b/frameworks/base/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
index c7ebecb..a44aec6 100755
--- a/frameworks/base/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
+++ b/frameworks/base/wifi/java/android/net/wifi/WifiEnterpriseConfig.java
@@ -837,6 +837,9 @@ public class WifiEnterpriseConfig implements Parcelable {
     public String toString() {
         StringBuffer sb = new StringBuffer();
         for (String key : mFields.keySet()) {
+            // shanaibing add start,modify cve-2016-3897
+            if (PASSWORD_KEY.equals(key)) continue;
+            // shanaibing add end
             sb.append(key).append(" ").append(mFields.get(key)).append("\n");
         }
         return sb.toString();

4.CVE-2016-2439

Android是美国谷歌(Google)公司和开放手持设备联盟(简称OHA)共同开发的一套以Linux为基础的开源操作系统。Bluetooth是其中的一个蓝牙组件。

Android的Bluetooth中的btif/src/btif_dm.c文件存在缓冲区溢出漏洞。远程攻击者可借助较长的PIN值利用该漏洞在配对期间执行任意代码。以下版本受到影响:Android 4.4.4之前版本,5.0.2之前版本,5.1.1之前版本,6.0之前版本,6.0.1之前版本。

目前厂商已经发布了升级补丁以修复此安全问题,补丁获取链接:

https://source.android.com/security/bulletin/2016-05-01.html

diff --git a/external/bluetooth/bluedroid/btif/src/btif_dm.c b/external/bluetooth/bluedroid/btif/src/btif_dm.c
index b2e80d3..d061479 100644
--- a/external/bluetooth/bluedroid/btif/src/btif_dm.c
+++ b/external/bluetooth/bluedroid/btif/src/btif_dm.c
@@ -1968,6 +1968,11 @@ bt_status_t btif_dm_remove_bond(const bt_bdaddr_t *bd_addr)
 bt_status_t btif_dm_pin_reply( const bt_bdaddr_t *bd_addr, uint8_t accept,
                                uint8_t pin_len, bt_pin_code_t *pin_code)
 {
+    // shanaibing add for cve-2016-2439
+    if (pin_code == NULL || pin_len > PIN_CODE_LEN) 
+        return BT_STATUS_FAIL; 
+    // shanaibing add end    
+
     BTIF_TRACE_EVENT2("%s: accept=%d", __FUNCTION__, accept);
 #if (defined(BLE_INCLUDED) && (BLE_INCLUDED == TRUE))

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值