按 Enter 到主內容區
:::

TWCERT-電子報

:::

ClamAV處理特定檔案易衍生 RCE & DoS

發布日期:
字型大小:
  • 發布單位:TWCERT/CC
  • 更新日期:2019-04-03
  • 點閱次數:424
ClamAV處理特定檔案易衍生 RCE & DoS

CVE編號

CVE-2018-14679,CVE-2018-14680,CVE-2018-14681,CVE-2018-14682

內文

●概述:
函式庫libsmpack專門用來處理Microsoft壓縮格式,而防毒軟體Clam AntiVirus(ClamAV)使用libsmpack為其內部功能,ClamAV係思科及推廣者社群以C語言開發,能在文字介面運作,支援Unix-like系統及Windows、Mac OS X環境,經測試libsmpack發掘多項記憶體存取異常,在程式碼chmd.c存在Off-by-one(差一)邏輯錯誤,影響TOLOWER()函數解壓縮CHM檔案過程;亦使fast_find()反參照資料未經初始化,位址落於記憶體配置區外;且chmd_read_headers()讀取CHM檔名為空白時,無法解決例外條件而過度讀取1byte資料;至於kwajd.c內kwajd_read_headers()函數,則因讀取惡意檔時主、副檔名觸發邏輯缺失,將過度寫入資料,目前僅針對Ubuntu linux平台之libsmpack釋出修補,ClamAV仍停留在7月推出0.100.1版,暫無更新。
●編註:
(1) Off-by-one錯誤
在libmspack軟體元件內,程式碼mspack/chmd.c存在數個差一錯誤(Off-by-one error:OBOE),OBOE通常是判斷式中數學符號 < 、<=、>、>= 被設計師誤用所致,屬於邏輯錯誤,因邊界條件值判斷失誤,使執行迴圈產生多一次或少一次的偏差。
(1-1)微軟編譯的協助操作說明檔Microsoft Compiled HTML Help(CHM),當chmd.c內巨集函數TOLOWER()處理 *.chm檔案時,解壓縮過程異常,容易遭駭客藉以執行任意碼。
(1-2)由於程式檢查CHM PMGI/PMGL chunk number有效性時,發生Off-by-one錯誤,導致反參照的未初始化資料位置,越過fast_find()所配屬chunk cache記憶體末端範圍,引發crash。
(2)檔名解析缺陷
(2-1)同樣是mspack/chmd.c程式瑕疵,處理CHM檔案時,若檔名為空白,或者出現字碼表上U+0100啟始之拉丁字母(Ā Ă….),則chmd_read_headers()函數無法檢查並駁回異常字元,處理過程將過度讀取1byte資料,產生DoS狀態。
(2-2)mspack/kwajd.c內kwajd_read_headers()函數運作時,處理惡意KWAJ檔案header,將觸發讀取主檔名與副檔名的邏輯缺失,造成1至2 byte資料,從而肇生RCE事件。

影響產品

clamav 0.100.1以前版本

解決辦法

libmspack 0.7alpha已釋出,能解決相關弱點,Ubuntu linux平台用戶,可下載clamav_0.100.1+dfsg.orig.tar.xz,參考https://launchpad.net/ubuntu/+source/clamav/0.100.1+dfsg-1ubuntu0.14.04.3?_ga=2.188216680.1192419556.1534897446-771631509.1532911318
回頁首