码迷,mamicode.com
首页 > 移动开发 > 详细

Android StageFright漏洞攻击

时间:2015-07-30 14:57:41      阅读:752      评论:0      收藏:0      [点我收藏+]

标签:android   stagefrigh   media   内存泄漏   攻击   

1. 简介

网络安全机构Zimperium最近发现一个Android有史以来最为严重的漏洞,该漏洞预计会影响95%的Android设备,攻击者可利用该漏洞远程操控手机的麦克风、窃取文件、查看邮件并获取个人证书等。Android 2.2到5.1的所有版本上均存在此漏洞。

  1. 如何触发漏洞攻击
    该漏洞未主动性漏洞,不需要用户手动触发,隐蔽性非常高。
    通过任何一种方式就收针对此漏洞攻击的视频就会触发,包括但不限于通过彩信,QQ,微信接收此视频都会触发此漏洞。采用Chrome在线播放此视频也会触发攻击。

2. 漏洞说明

该漏洞是由于Android StageFright缓冲以溢出造成。
示例如下:(Nexus 5, Android 5.1.1)
技术分享
新发现的这一漏洞尤其具有危险性,因为它不像网络钓鱼等攻击手段,需要打开攻击者发送的文件或链接才会感染,哪怕受害者不做任何事情它也能偷偷地入侵设备并在用户发现前将证据抹掉。
Stagefright漏洞被分配在了下列CVE中:
CVE-2015-1538
CVE-2015-1539
CVE-2015-3824
CVE-2015-3826
CVE-2015-3827
CVE-2015-3828
CVE-2015-3829

3. 解决方案

虽然Zimperium项Google提交了漏洞补丁,但是用户短时间内无法收到补丁更新。
此外CyanogenMod从提交上可以看出,已经修复部分漏洞。
根据CM的提交更新可以看出是StageFright的MEPG4Extractor.cpp 中Parser部分处理Metadata时造成内存泄露引起的。
https://github.com/CyanogenMod/android_frameworks_av/commits/cm-12.0

主要函数:
parse3GPPMetaData
parseChunk

 status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int depth) {
-    if (size < 4) {
+    if (size < 4 || size == SIZE_MAX) {
         return ERROR_MALFORMED;
     }

-    uint8_t *buffer = new (std::nothrow) uint8_t[size];
+    uint8_t *buffer = new (std::nothrow) uint8_t[size + 1];
+        if (size < 6) {
+            return ERROR_MALFORMED;
+        }
+
parseChunk:
+            if (SIZE_MAX - chunk_size <= size)
+                return ERROR_MALFORMED;
+


                 const int kSkipBytesOfDataBox = 16;
+                if (chunk_data_size <= kSkipBytesOfDataBox) {
+                    return ERROR_MALFORMED;
+                }
+
                 mFileMetaData->setData(

版权声明:本文为博主原创文章,未经博主允许不得转载。

Android StageFright漏洞攻击

标签:android   stagefrigh   media   内存泄漏   攻击   

原文地址:http://blog.csdn.net/matrix_laboratory/article/details/47149053

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!