標籤:android stagefrigh media 記憶體流失 攻擊
1. 簡介
網路安全機構Zimperium最近發現一個Android有史以來最為嚴重的漏洞,該漏洞預計會影響95%的Android裝置,攻擊者可利用該漏洞遠程操控手機的麥克風、竊取檔案、查看郵件並擷取個人認證等。Android 2.2到5.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漏洞攻擊