丁香五月天婷婷久久婷婷色综合91|国产传媒自偷自拍|久久影院亚洲精品|国产欧美VA天堂国产美女自慰视屏|免费黄色av网站|婷婷丁香五月激情四射|日韩AV一区二区中文字幕在线观看|亚洲欧美日本性爱|日日噜噜噜夜夜噜噜噜|中文Av日韩一区二区

  • 您正在使用IE低版瀏覽器,為了您的雷峰網(wǎng)賬號安全和更好的產品體驗,強烈建議使用更快更安全的瀏覽器
    此為臨時鏈接,僅用于文章預覽,將在時失效
    政企安全 正文
    發(fā)私信給實習小蘇
    發(fā)送

    1

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    本文作者: 實習小蘇 2017-05-26 20:09
    導語:最近引起微信閃退的GIF表情技術分析。

    雷鋒網(wǎng)按:5月17日左右,微信群中出現(xiàn)了可使 iOS 版微信閃退的GIF表情,雷鋒網(wǎng)今早報道了關于該事件的大致情況。5月26日傍晚,360安全研究員宋申雷對雷鋒網(wǎng)表示,微信知道這個漏洞兩周了,但是攔截策略依然不行,第一個crash出現(xiàn)時就對樣本做了hash 攔截,這都兩周了,改一個字節(jié)的版本都有多少個了。此外,他還指出,現(xiàn)在不在原圖改字節(jié)了,直接把有漏洞的最后一幀構造到任意的GIF中。

    為了更好地促進讀者了解其中的機制,360NirvanTeam對于此事件進行了具體的技術分析。

    本文作者「360涅槃團隊的安全研究員王兆威」,授權雷鋒網(wǎng)發(fā)布。

    一、背景情況

    5月17日起,在各個微信群中流傳著一個天線寶寶的GIF表情。在iOS版的微信上,只要打開了包含這個GIF表情的聊天窗口,就會造成微信閃退。

    在進行具體分析之前,對崩潰原因進行了猜測:(1)iOS系統(tǒng)自帶GIF解析功能存在問題;(2)微信自己實現(xiàn)GIF解析的功能,由于對輸入數(shù)據(jù)的校驗不嚴格,導致異常。經過測試,發(fā)現(xiàn)iOS版QQ不受影響,因此可以排除iOS的GIF解析問題。

    二、原因分析

    1.     樣本精簡

    初始的GIF樣本有1MB之多,不利于定位引起問題的具體數(shù)據(jù),因此我們需要對樣本進行精簡。通過010 Editor打開原始樣本GIF,利用GIF模板解析,發(fā)生解析異常,這就表示樣本GIF的格式存在問題。

    從模板解析的情況顯示,在38幀正常的圖片數(shù)據(jù)后,出現(xiàn)了異常的數(shù)據(jù)。如圖所示,因此我們將正常數(shù)據(jù)部分移除,僅保留異常數(shù)據(jù),進行下一步精簡。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    可以看到,剩余的異常數(shù)據(jù)的部分有10多萬個,通過二分法的方式進行測試和排除。具體就是,刪除一半后,測試另外一半是否可以導致崩潰。如果崩潰了,說明引起異常的數(shù)據(jù)在保留的一半中,反之則說明在刪除的部分中。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    經過不斷的排除后,發(fā)現(xiàn)異常的數(shù)據(jù)就在下圖的紫色部分中。只要帶有GIF的圖像數(shù)據(jù)部分帶有這些異常數(shù)據(jù),就會導致iOS微信閃退。 

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    2.     調試分析

    經過樣本精簡,我們已經發(fā)現(xiàn)了引起異常的數(shù)據(jù)位置。那么,現(xiàn)在就需要結合實際的調試,來確定實際引起異常的數(shù)據(jù)。以iOS微信6.5.7版為例,崩潰發(fā)生時的調用棧如下,崩潰發(fā)生于微信內部,說明是微信自身的GIF解析功能存在問題。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    經過對相關函數(shù)的逆向分析,最終確定了引起異常的數(shù)據(jù)。首先來觀察sub_100B6CBF0這個函數(shù),對于GIF中的數(shù)據(jù)進行循環(huán)查找,如果存在0x21和0xF9,那么當前數(shù)據(jù)就表示是一個GraphicControlExtension結構,并接著對GraphicControlExtension數(shù)據(jù)進行解析。 

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    如果當前查找到的數(shù)據(jù)為0x2C,就表示搜索到了一個ImageDescriptor,跳出while循環(huán),進行實際圖片數(shù)據(jù)的解析。這里也就是異常數(shù)據(jù)的起始位置! 

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    正常的幀數(shù)據(jù)的ImageDescriptor數(shù)據(jù)如下:

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    而引起異常的數(shù)據(jù)中,恰好存在0x2C這個關鍵的分隔符,導致下述紅框中的數(shù)據(jù)被解析成了一個ImageDescriptor??梢钥吹剑琁mageWidth屬性為0,ImageHeight屬性為0x100。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    接下來,這部分異常的數(shù)據(jù)就會進入sub_100B6CE90函數(shù)進行解析。由于ImageWidth為0,導致與ImageHeight相乘后等于0,在new buffer時,傳入的大小參數(shù)為0,這是第一個問題,但這并不會導致閃退,仍然可以分配一個很小的堆塊。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    引起崩潰的代碼如下,在else block中,sub_100B6C4F0的作用沒有具體跟蹤,猜測是進行l(wèi)zw解壓縮,并返回解壓縮后的數(shù)據(jù)長度v21。由于v10 = 0x0000010000000000,截斷成unsigned int后為0,這就導致 v10 – 1 – v21 為負數(shù),作為memset第三個參數(shù),相應的unsigned int形式就是一個很大的正數(shù)。在memset時,就會導致崩潰,這是第二個問題。

    GIF表情引發(fā)微信閃退?這里有最強技術分析

    三、總結

    這個問題的根本原因是由于微信實現(xiàn)了自己的GIF解析功能,但由于對輸入數(shù)據(jù)的校驗不嚴格,導致異常的數(shù)據(jù)被解析,引起崩潰。

    在5月17日當天,這個GIF開始流傳后,微信似乎在服務器端做了屏蔽,使得這個GIF無法被正常接收。但我們只要隨便修改一下GIF中的任意一個字節(jié),就能繞過這個屏蔽措施。同時由于iOS應用上架需要經過蘋果審核,需要額外耗費一定時間。這就使得這個Bug即使修復后,所有用戶也無法立刻更新。目前最新的iOS微信6.5.8版本仍然存在崩潰的問題。

    雷峰網(wǎng)版權文章,未經授權禁止轉載。詳情見轉載須知。

    分享:
    相關文章
    當月熱門文章
    最新文章
    請?zhí)顚懮暾埲速Y料
    姓名
    電話
    郵箱
    微信號
    作品鏈接
    個人簡介
    為了您的賬戶安全,請驗證郵箱
    您的郵箱還未驗證,完成可獲20積分喲!
    請驗證您的郵箱
    立即驗證
    完善賬號信息
    您的賬號已經綁定,現(xiàn)在您可以設置密碼以方便用郵箱登錄
    立即設置 以后再說