ClamAV處理特定檔案易衍生 RCE & DoS
- 發布單位:TWCERT/CC
- 更新日期:2019-04-03
- 點閱次數:424
CVE編號
內文
●概述:
函式庫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事件。
影響產品
解決辦法
相關連結
- https://usn.ubuntu.com/3728-2/
- http://www.clamav.net/downloads
- https://www.securitytracker.com/id/1041410
- http://www.openwall.com/lists/oss-security/2018/07/26/1
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14679
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904802
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14680
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904801
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14681
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904799
- https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2018-14682
- https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=904800
- http://www.linuxsecurity.com/content/view/213324?rdf#source%253Dgooglier%252Ecom#https%253A%252F%252
- https://github.com/kyz/libmspack/commit/4fd9ccaa54e1aebde1e4b95fb0163b699fd7bcc8
- https://github.com/kyz/libmspack/commit/0b0ef9344255ff5acfac6b7af09198ac9c9756c8
- https://github.com/kyz/libmspack/commit/72e70a921f0f07fee748aec2274b30784e1d312a
- https://zh.wikipedia.org/wiki/Unicode%25E5%25AD%2597%25E7%25AC%25A6%25E5%2588%2597%25E8%25A1%25A8
- https://zh.wikipedia.org/wiki/%25E5%25B7%25AE%25E4%25B8%2580%25E9%2594%2599%25E8%25AF%25AF
- https://chenweichi.blogspot.com/2012/11/chm.html
- https://encrypted-tbn0.gstatic.com/images?q=tbn:ANd9GcTIm0RA99pKt2gk1SgYoNoWD4f2opQPuI7ZuZkGvxeBtkV-