新聞中心
研究人員在Facebook instagram 安卓和iOS 版本APP 中發(fā)現(xiàn)了一個高危漏洞,攻擊者利用該漏洞可以拒絕用戶訪問APP,完全控制用戶賬戶,甚至利用手機設備監(jiān)聽用戶。

威縣網(wǎng)站建設公司創(chuàng)新互聯(lián),威縣網(wǎng)站設計制作,有大型網(wǎng)站制作公司豐富經(jīng)驗。已為威縣上千家提供企業(yè)網(wǎng)站建設服務。企業(yè)網(wǎng)站搭建\成都外貿(mào)網(wǎng)站制作要多少錢,請找那個售后服務好的威縣做網(wǎng)站的公司定做!
漏洞細節(jié)
該漏洞存在于instagram 處理圖像的方式中,從技術上將該漏洞是一個堆溢出漏洞(CVE-2020-1895),當instagram 嘗試發(fā)送大一點的文件時會觸發(fā)該漏洞。攻擊者只需通過常見的消息平臺或郵件向攻擊目標發(fā)送精心偽造的圖片就可以觸發(fā)該漏洞。
有漏洞的函數(shù)為read_jpg_copy_loop,會在解壓縮過程中引發(fā)整數(shù)溢出。
Read_jpg_copy_loop代碼段
在處理JPEG 圖像文件時,有漏洞的函數(shù)會處理圖像尺寸。下面是有漏洞的代碼的偽代碼:
- width = rect->right - rect->bottom;
- height = rect->top - rect->left;
- allocated_address = __wrap_malloc(width*height*cinfo->output_components);// output_scanline;
- if ( (unsigned int)output_scanline >= cinfo->output_height )
- break;
- //reads one line from the file into the cinfo buffer
- jpeg_read_scanlines(cinfo, line_buffer, 1);
- if ( output_scanline >= Rect->left && output_scanline < Rect->top )
- {
- memcpy(allocated_address + bytes_copied , line_buffer, width*output_component);// <--Oops
- bytes_copied += width * output_component;
- }
- }
其中:
_wrap_malloc 函數(shù)會根據(jù)圖像尺寸的3個參數(shù)來分配內(nèi)存塊。Width和height 都是16位的整數(shù)(uint16_t)。
cinfo->output_component 告訴我們有多少個字節(jié)用來表示每個像素。變量的值分別代表不同的意思,1表示Greyscale、3表示RGB、4表示RGB + Alpha\CMYK等。
除了height和width外,output_component 也可以完全被攻擊者控制。因為在分析的過程中并不會與文件中的其他數(shù)據(jù)進行驗證。
__warp_malloc 希望其參數(shù)在32位的寄存器中進行處理。也就是說如果分配的大小超過 (2^32) 字節(jié),那么就可以引發(fā)整數(shù)溢出。
分配的大小是通過圖像的width乘 height再乘以 output_components 得到的。因為沒有檢查,那么一旦被攻擊者所控制,進一步濫用后就會引發(fā)整數(shù)溢出。
- _wrap_malloc(width * height * cinfo->output_components);// <---- Integer overflow
然后緩存被傳遞給memcpy,引發(fā)基于堆的緩存溢出。
分配后,memcpy 函數(shù)會被調(diào)用,然后復制圖像數(shù)據(jù)到分配的內(nèi)存中。
復制的過程是一行一行進行的:
- memcpy(allocated_address + bytes_copied ,line_buffer, width*output_component);//<--Oops
size (width*output_component)數(shù)據(jù)也會被復制 height 次。
為了引發(fā)內(nèi)存奔潰,還需要溢出決定分配大小的整數(shù),計算的結果必須要大于32 比特。當復制的數(shù)據(jù)大于2^32 (4GB) 時,如果循環(huán)到了一個無法映射的頁面,程序大概率會奔潰:
漏洞利用
從漏洞利用的角度來看,一個線性堆溢出漏洞使得攻擊者可以控制分配的大小、溢出的數(shù)、以及溢出內(nèi)存區(qū)域的內(nèi)容。
攻擊者利用該漏洞可以按照如下步驟:
- · 通過郵件、WhatsApp、短信等方式發(fā)送惡意圖片給受害者;
- · 如果用戶保存圖片,并打開instagram APP,那么漏洞利用就開始了,攻擊者就可以遠程完全控制目標手機;
- · 漏洞利用會使得受害者的instagram APP 持續(xù)奔潰,除非卸載后重新安裝。
補丁
Facebook 已于今年春季修復了該漏洞,F(xiàn)acebook稱沒有發(fā)現(xiàn)任何漏洞在野利用的跡象。
當前名稱:instagram_RCE:instagramAPP遠程代碼漏洞
網(wǎng)頁網(wǎng)址:http://fisionsoft.com.cn/article/cddoihe.html


咨詢
建站咨詢
