此前蘋果發布安全公告修復 CVE-2023-41064 和 CVE-2023-4863 漏洞,開源庫漏攻擊者利用該漏洞可以向 iPhone 和 iPad 發送特制信息,洞影釘QQ等多款都面點網受害者手機或平板只要收到這條信息就會觸發漏洞,響深信釘險藍常州高端美女上門外圍上門外圍女(電話微信156-8194-*7106)提供全球及一二線城市兼職美女上門外圍上門外圍女無需用戶進行任何交互,遠測危害程度極高。試顯示微
根據調查該漏洞被商業間諜軟件公司用來開發間諜軟件,軟件專門針對一些高價值的臨風特定用戶發起攻擊,背后的開源庫漏目的自然不是為了錢。
事實證明這個漏洞并不只是洞影釘QQ等多款都面點網威脅 iPhone 和 iPad,因為漏洞是響深信釘險藍 WebP 圖像開源庫 libwebp 中的,理論上只要軟件調用了這個開源庫那么都受影響。遠測常州高端美女上門外圍上門外圍女(電話微信156-8194-*7106)提供全球及一二線城市兼職美女上門外圍上門外圍女
所以目前 Google Chrome、試顯示微Mozilla Firefox、軟件Microsoft Edge 等瀏覽器均已發布更新修復這個漏洞,臨風然而還有很多軟件并未修復。開源庫漏

PoC 概念驗證已經被公布:
更糟糕的是目前網上已經出現了該漏洞的 PoC,實際上有一些能力的黑客很容易找出漏洞的利用方法,因此只需要制作特定圖片進行投遞即可,盡管不一定可以實現無感攻擊,但想要成功發起攻擊并不難。
仍然還有不少軟件未更新:
網絡安全公司 DarkNavy (深藍) 日前發布了一篇分析報告,根據深藍的測試,國內也有很多軟件受該漏洞影響,因為它們也需要調用 libwebp 開源庫來加載 WebP 圖像。
受影響的包括但不限于微信、釘釘、QQ 等國民級即時通訊 / 協作類軟件,目前這些軟件都還沒有發布更新進行修復。
至于其他用戶量稍微比微信、釘釘、QQ 低一些的類似軟件自然也受該漏洞影響,當然除了即時通訊、協作類軟件,其他能夠發送和展示圖片的軟件多半也會受這個漏洞影響,只要這些軟件支持 WebP 圖像,那么大概率都是調用 libwebp 開源庫的。
所以在這里藍點網也提醒各位近期碰到一些軟件彈出的升級提示一定要及時升級,因為這很有可能就是用來修復該漏洞的。
尤其是在 PoC 已經被公布的情況下,這下會有很多黑客參與進來,到時候就不是針對高價值客戶了,可能普通用戶也會被攻擊。
深藍表示:
在本案例中,漏洞發生在一個常用基礎庫中,實際受影響的軟件產品數量超乎想象,但能及時修復漏洞的廠商微乎其微。
管中窺豹,與 Chrome、Firefox 等團隊相比,國內軟件開發商在漏洞信息獲取、漏洞研判、漏洞修復、應急響應等諸多環節存在明顯不足。
只有安全應急從被動走向主動,才能讓“安全”更真實。
下面是深藍關于該漏洞的技術分析細節:
本次漏洞根源,位于 webp 圖片的處理代碼邏輯中。當解析一個無損格式的webp圖片時,解碼器采用了范式霍夫曼編碼 (Canonical Huffman Code) 算法,首先從圖片流中讀取前綴編碼的數據,基于此數據構建一個完整的霍夫曼編碼表,隨后依照這個編碼表對圖片流中的壓縮數據進行解碼,得到原始的圖像。
霍夫曼編碼(Huffman Coding),是一種用于無損數據壓縮的熵編碼(權編碼)算法。
在計算機資料處理中,霍夫曼編碼使用變長編碼表對源符號(如文件中的一個字母)進行編碼。
變長編碼表通過一種評估來源符號出現概率的方法得到,出現概率高的字母使用較短的編碼,反之出現概率低的則使用較長的編碼。
這可以使編碼后的字符串平均長度、期望值降低,從而達到無損壓縮數據的目的。
根據范式霍夫曼算法,在構建一個霍夫曼表時,首先會使用一級表,用于查詢長度小于 N bit (N 默認為 8) 的霍夫曼編碼;隨后,若出現了長度超過 N bit 的編碼,解碼器會為其分配二級表,用于查詢超過 N bit 的編碼部分。在分配霍夫曼編碼表的內存空間時,解碼器提前會將所有一級表和二級表的空間一并分配出來,其內存大小是固定的:
#define FIXED_TABLE_SIZE (630 * 3 + 410)static const uint16_t kTableSize[12] = { FIXED_TABLE_SIZE + 654,FIXED_TABLE_SIZE + 656,FIXED_TABLE_SIZE + 658,FIXED_TABLE_SIZE + 662,FIXED_TABLE_SIZE + 670,FIXED_TABLE_SIZE + 686,FIXED_TABLE_SIZE + 718,FIXED_TABLE_SIZE + 782,FIXED_TABLE_SIZE + 912,FIXED_TABLE_SIZE + 1168,FIXED_TABLE_SIZE + 1680,FIXED_TABLE_SIZE + 2704};const int table_size = kTableSize[color_cache_bits];huffman_tables = (HuffmanCode*)WebPSafeMalloc(num_htree_groups * table_size,sizeof(*huffman_tables));問題在于,解碼器默認圖片中保存的霍夫曼編碼表數據是合理的,因此提前計算了這一情況下能夠容納的最大內存長度。而霍夫曼編碼表數據是來自不受信任源的,是可以由攻擊者任意構造的,且編碼器不會對這些數據進行有效性檢查。
// Fill in 2nd level tables and add pointers to root table.for (len = root_bits + 1, step = 2; len <= MAX_ALLOWED_CODE_LENGTH;++len, step <<= 1) { num_open <<= 1;num_nodes += num_open;num_open -= count[len];if (num_open < 0) { return 0;}if (root_table == NULL) continue;for (; count[len] > 0; --count[len]) { HuffmanCode code;if ((key & mask) != low) { table += table_size;table_bits = NextTableBitSize(count, len, root_bits);table_size = 1 << table_bits;total_size += table_size;low = key & mask;root_table[low].bits = (uint8_t)(table_bits + root_bits);root_table[low].value = (uint16_t)((table - root_table) - low);}code.bits = (uint8_t)(len - root_bits);code.value = (uint16_t)sorted[symbol++];ReplicateValue(&table[key >> root_bits], step, table_size, code); // overflow herekey = GetNextKey(key, len);}}因此,如果攻擊者能夠構造出一個非法的霍夫曼表,包含了大量的長編碼,這將導致解碼器將分配過多的二級表,使得霍夫曼表的總內存大小超過分配大小,發生堆緩沖區溢出。


相關文章




精彩導讀
熱門資訊
關注我們