溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

關(guān)于最近很火的安卓stagefright漏洞

發(fā)布時間:2020-06-10 18:17:41 來源:網(wǎng)絡(luò) 閱讀:340 作者:745000 欄目:安全技術(shù)

自轉(zhuǎn)

標(biāo) 題: 【討論】【分享】關(guān)于最近很火的安卓stagefright漏洞
作 者: minczsys
時 間: 2015-07-29,12:41:42
鏈 接http://bbs.pediy.com/showthread.php?t=202868

新人貌似只能在這里發(fā)帖,關(guān)于最近很火的安卓stagefright漏洞
求轉(zhuǎn)正
求漏洞的poc
求討論出poc
本人菜鳥,求指正
這個漏洞被歸屬于
CVE-2015-1538  
CVE-2015-1539 
CVE-2015-3824 
CVE-2015-3826 
CVE-2015-3827  
CVE-2015-3828 
CVE-2015-3829 
參考網(wǎng)站:
1.http://blog.zimperium.com/experts-found-a-unicorn-in-the-heart-of-android/(可能需要科學(xué)上網(wǎng),發(fā)現(xiàn)這個漏洞的作者的blog)
2.https://threatpost.com/android-stagefright-flaws-put-950-million-devices-at-risk/113960(這個也是新聞報道)
3.http://www.freebuf.com/news/73411.html(這個是新聞報道)
4.http://www.freebuf.com/articles/terminal/73517.html (這個里面有一點信息)
偽詳情:
出問題代碼在media/libstagefright/MPEG4Extractor.cpp,media/libstagefright/SampleTable.cpp,
media/libstagefright/ESDS.cpp
其中修復(fù)最多的為MPEG4Extractor.cpp 共7處
SampleTable.cpp,4處
ESDS.cpp,3處
附件會提供這些文件及其相關(guān)的頭文件(修復(fù)前和修復(fù)后),希望盡可能快的討論出來一個利用方法,最好是在8月份之前。:)舉其中一個例子,參考網(wǎng)站4里面有一些這些例子之外的其他例子,也可以使用diff工具進(jìn)行對比。這次已知的漏洞一共三種類型,越界讀取漏洞,整數(shù)下溢漏洞,整數(shù)溢出漏洞。其中SampleTable.cpp中修復(fù)了一個高危級別的整數(shù)溢出漏洞。
下面舉一個,越界讀取漏洞:MPEG4Extractor.cpp(這個漏洞的部分修復(fù),不完全)
====我割====修復(fù)前====
status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int depth) {
  /*注意考慮size*/
  if (size < 4 ) {
        return ERROR_MALFORMED;
    }
  /*注意*/
    uint8_t *buffer = new (std::nothrow) uint8_t[size];
    if (buffer == NULL) {
        return ERROR_MALFORMED;
    }
    if (mDataSource->readAt(
                offset, buffer, size) != (ssize_t)size) {
        delete[] buffer;
        buffer = NULL;

        return ERROR_IO;
    }
====再割====修復(fù)后====
status_t MPEG4Extractor::parse3GPPMetaData(off64_t offset, size_t size, int depth) {
    /*注意*/
  if (size < 4 || size == SIZE_MAX) {
        return ERROR_MALFORMED;
    }
  /*注意*/
    uint8_t *buffer = new (std::nothrow) uint8_t[size + 1];
    if (buffer == NULL) {
        return ERROR_MALFORMED;
    }
    if (mDataSource->readAt(
                offset, buffer, size) != (ssize_t)size) {
        delete[] buffer;
        buffer = NULL;

        return ERROR_IO;
    }
====分析====個人理解,望不吝指教====
parse3GPPMetaData這個函數(shù)如果不是以NUL結(jié)尾的話,
if (buffer[size - 1] != '\0') {
              char tmp[4];
              sprintf(tmp, "%u", buffer[size - 1]);

              mFileMetaData->setCString(kKeyCDTrackNumber, tmp);

setCString不知道哪里結(jié)束,就會發(fā)生越界讀取。
========
詳情見附件 說明.txt
附件:http://pan.baidu.com/share/link?shar...&uk=1460778035

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI