欢迎访问移动开发之家(rcyd.net),关注移动开发教程。移动开发之家  移动开发问答|  每日更新
页面位置 : > > 内容正文

Android StageFright漏洞攻击,androidstagefright

来源: 开发者 投稿于  被查看 48419 次 评论:39

Android StageFright漏洞攻击,androidstagefright


1. 简介

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

2. 如何触发漏洞攻击

该漏洞未主动性漏洞,不需要用户手动触发,隐蔽性非常高。
触发方式:
(1)通过任何一种方式就收针对此漏洞攻击的视频就会触发,包括但不限于通过彩信,QQ,微信接收此视频都会触发此漏洞。
(2)浏览该视频
采用文件管理器,图库浏览该视频
(3)播放该视频
采用由Android MediaFramework API编写的播放器播放此视频。
采用Chrome在线播放此视频
(4)开机

3. 漏洞说明

该漏洞是由于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

4. 解决方案

虽然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(

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

相关频道:

用户评论