溫馨提示×

溫馨提示×

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

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

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

發布時間:2021-12-28 20:04:23 來源:億速云 閱讀:276 作者:柒染 欄目:網絡安全

這期內容當中小編將會給大家帶來有關Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析,文章內容豐富且以專業的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

漏洞簡介

Google發布公告,舊版本的 chrome 瀏覽器的 FreeType字體庫中存在堆溢出,被利用可能導致 RCE(遠程代碼執行)。

安全專家建議用戶盡快升級到86.0.4240.111 之后的版本,以解決風險。

漏洞原理

一、TTF 嵌入圖片

TTF 字體支持嵌入 PNG 格式的圖片作為字形數據,在嵌入時圖片數據會被保存在字體文件的 SBIX 表格中,在處理時會通過提取 SBIX 表中的 PNG 中存取的信息來實現字體渲染。SBIX 表中的格式如下圖:

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

SBIX 中的 strikeOffset 存儲了 Strikes 的數據信息的偏移,Strikes 中的 glyphDataOffset 存儲了具體的字形信息的偏移,Strikes 格式和字形信息的格式如下圖:

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

字形信息中的 data 存儲了被嵌入的圖片信息。下面是樣本中的 SBIX 和存儲的圖片信息。

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

PNG 圖片信息被保存在了 hex(0x1a30 + 0x5aaec + 0x8) = 0x5c524 處。通過 IHDR 可以看到圖片的一些基本信息,具體信息如下圖:

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

二、Load_SBit_Png 函數實現

FreeType 庫中 PNG 圖片信息的提取是通過 Load_SBit_Png 函數實現的。Load_SBit_Png 函數的處理流程如下:

1. 將字形信息中 data 指向的內存解析為 PNG

2. 提取被解析后圖片的 IHDR 存儲的信息(圖像寬度和高度,深度及顏色類型等)

3. 將解析后的信息提取到字形信息中

4. 按照之前解析到信息開辟內存用于保存圖片信息

三、漏洞原理

漏洞發生在將解析到的圖片信息提取到字形信息過程中,PNG 圖片中的 IHDR 存儲的寬度和高度的數據類型為 uint32,在存儲到字形信息時,會被轉換為 unsigned short 類型,此時如果圖片的寬度和高度信息大于 0x7FFF 則會發生截斷。

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

之后字形信息中存儲的相應數據會被傳遞到用于存儲 PNG 圖片的字形信息的 bitmap 里,bitmap 中的 rows 對應圖片的高度,width 對應圖片的寬度,pitch 對應 bitmap 每行占據的字節數,即 寬度 * 4。之后會調用 ft_glyphslot_alloc_bitmap 函數完成 bitmap 中用于存儲圖片信息的內存的分配。如下圖,分配的內存大小是 map->rows * (FT_ULong)map->pitch,即高度 * 每行占據的字節數。之后調用 png_read_image 讀取圖片信息到 bitmap->buffer。如果 PNG 圖片的高度被截斷,則會導致分配的內存不足,在讀取圖片信息時發生堆溢出。

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

溢出后 bitmap 信息如下圖,buffer 的長度即為 0xa3 * 0xc ,查看 buffer 之后的數據可以看到已經被覆蓋。


Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

漏洞驗證

一、在87.0.4247.0(開發者內部版本)驗證

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

二、86.0.4240.111 版本修復分析

比較 imgWidth 和 imgHeight 是否大于 0x7FFF, 大于則退出。

Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析

上述就是小編為大家分享的Chrome FreeType字體庫堆溢出漏洞CVE-2020-15999的原理分析了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女