時間:2020-09-29來源:www.outletmksalestore.com作者:電腦系統城
研究人員在Facebook instagram 安卓和iOS 版本APP 中發現了一個高危漏洞,攻擊者利用該漏洞可以拒絕用戶訪問APP,完全控制用戶賬戶,甚至利用手機設備監聽用戶。
漏洞細節
該漏洞存在于instagram 處理圖像的方式中,從技術上將該漏洞是一個堆溢出漏洞(CVE-2020-1895),當instagram 嘗試發送大一點的文件時會觸發該漏洞。攻擊者只需通過常見的消息平臺或郵件向攻擊目標發送精心偽造的圖片就可以觸發該漏洞。
有漏洞的函數為read_jpg_copy_loop,會在解壓縮過程中引發整數溢出。
Read_jpg_copy_loop代碼段
在處理JPEG 圖像文件時,有漏洞的函數會處理圖像尺寸。下面是有漏洞的代碼的偽代碼:
其中:
_wrap_malloc 函數會根據圖像尺寸的3個參數來分配內存塊。Width和height 都是16位的整數(uint16_t)。
cinfo->output_component 告訴我們有多少個字節用來表示每個像素。變量的值分別代表不同的意思,1表示Greyscale、3表示RGB、4表示RGB + Alpha\CMYK等。
除了height和width外,output_component 也可以完全被攻擊者控制。因為在分析的過程中并不會與文件中的其他數據進行驗證。
__warp_malloc 希望其參數在32位的寄存器中進行處理。也就是說如果分配的大小超過 (2^32) 字節,那么就可以引發整數溢出。
分配的大小是通過圖像的width乘 height再乘以 output_components 得到的。因為沒有檢查,那么一旦被攻擊者所控制,進一步濫用后就會引發整數溢出。
然后緩存被傳遞給memcpy,引發基于堆的緩存溢出。
分配后,memcpy 函數會被調用,然后復制圖像數據到分配的內存中。
復制的過程是一行一行進行的:
size (width*output_component)數據也會被復制 height 次。
為了引發內存奔潰,還需要溢出決定分配大小的整數,計算的結果必須要大于32 比特。當復制的數據大于2^32 (4GB) 時,如果循環到了一個無法映射的頁面,程序大概率會奔潰:
漏洞利用
從漏洞利用的角度來看,一個線性堆溢出漏洞使得攻擊者可以控制分配的大小、溢出的數、以及溢出內存區域的內容。
攻擊者利用該漏洞可以按照如下步驟:
補丁
Facebook 已于今年春季修復了該漏洞,Facebook稱沒有發現任何漏洞在野利用的跡象。
2022-03-03
360安全衛士攝像頭防護怎么設置為免打擾模式?2022-03-03
希沃管家開啟冰點還原功能圖文教程 希沃管家怎么用2022-03-03
希沃管家卸載教程及卸載密碼分享 希沃管家怎么卸載電腦怎么進行系統防黑安全防護服務檢查與修復?電腦安全防護很重要,今天我們就來看看使用360安全衛士來保護電腦的技巧,需要的朋友可以參考下...
2022-03-03
360安全衛士異常感知系統怎么關閉?360安全衛士開啟常感知系統后電腦總是提示載出現故障,無法下載,該怎么關閉異常感知系統呢?下面我們就來看看詳細的教程,需要的朋友可以參考下...
2022-03-03