Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)

Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)

概述

國外安全人員Nadav Grossman 爆知名壓縮軟件WinRAR 存在安全漏洞,隱藏在軟件的一個邏輯判斷有問題,通過該漏洞可以實現代碼執行。相關代碼CVE編碼為:CVE-2018-20250, CVE-2018-20251, CVE-2018-20252和CVE-2018-20253,

國家信息安全漏洞共享平臺(CNVD)也已經收錄該系列漏洞(CNVD-2019-04911、CNVD-2019-04912、CNVD-2019-04913和CNVD-2019-04910,分別對應CVE-2018-20250、CVE-2018-20251、CVE-2018-20252和CVE-2018-20253),併發出安全公告,公告稱,攻擊者利用上述漏洞,可在未授權的情況下實現任意代碼執行。目前,漏洞利用原理已公開,廠商已發佈新版本修復此漏洞。

該漏洞不僅影響WinRAR也影響Bandizip,360壓縮,2345好壓等多款壓縮軟件,請使用這些軟件的及時更新。建議使用免費開源軟件7zip,7zip不受該漏洞影響。

漏洞原理

WinRAR 是window系統下最常用的壓縮包管理器,基於Windows圖形界面,可進行備份數據、文件壓縮和解壓,支持RAR/ZIP等格式的文件,在windows用戶中使用廣泛,是裝機必備軟件之一。WinRAR是一個款商用收費軟件,大多數用戶使用的漢化或者破解版本,存在很大的安全隱患,不建議用戶使用。

該次系列漏洞源於WinRAR依賴的舊動態鏈接庫UNACEV2.dll,該庫自從2006年已經有13年未曾更新過。該庫主要用來處理ACE格式的壓縮文件,在解壓ACE文件時,處理代碼中,代碼邏輯判斷出現問題,可以導致任意目錄訪問的穿越漏洞,可以利用漏洞進行文件寫入,甚至增加開機項等高特權操作。涉及漏洞的邏輯代碼演示版本如下:

Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)

該功能主要做以下檢查:

第一個字符為""或"/";文件名不以以下字符串".."或"../"開頭,的"路徑遍歷"父目錄;屏蔽以一下開頭的 "路徑遍歷"字串: "\.."、"\../"、"/../"、"/.."。

unacv2.dll中的提取函數調用WinRAR中的StateCallbackProc,並將ACE格式的文件名字段作為參數傳遞給它。WinRAR回調的驗證器檢查相對路徑,驗證器將ACE_CALLBACK_RETURN_CANCEL返回到dll,(因為文件名字段以反斜槓""開頭)並且文件創建被中止。將以下字符串傳遞給WinRAR回調的驗證器:"\sourbe\RED VERSION_¶"該名字會的下劃線會被unacv2.dll替換為*。

由於dll中存在錯誤("unacev2.dll"),回調中返回ACE_CALLBACK_RETURN_CANCEL,會由dll創建相對路徑(ACE歸檔中的文件名字段)中指定的文件夾。由於unacev2.dll在創建文件夾之前調用驗證器,在創建文件夾之後它會過早地檢查回調的返回值。因此,在調用WriteFile API之前,它會在將內容寫入提取的文件之前中止提取操作。它實際上創建了提取的文件,但是沒有向其寫入內容。它調用CreateFile API,然後檢查回調函數的返回碼。如果返回代碼是ACE_CALLBACK_RETURN_CANCEL,它實際上會刪除先前通過調用CreateFile API創建的文件。

由於該漏洞允許我們只創建空文件。可以通過在文件的末尾添加":"來繞過文件刪除,該文件會被視為備用數據流。作為回調返回ACE_CALLBACK_RETURN_CANCEL,則dll會嘗試刪除文件的備用數據流而不是文件本身。如果相對路徑字符串以""(斜槓)開頭,則dll代碼中還有另一個過濾函數會中止提取操作。但是,通過將"*"或"?"字符(通配符)添加到壓縮文件的相對路徑(文件名字段),將跳過此檢查,並且代碼可以繼續執行並觸發文件遍歷漏洞。由於WinRAR代碼中的回調驗證器,它不會觸發WinRAR中的錯誤。總結:

從WinRAR回調(ACE_CALLBACK_RETURN_CANCEL)獲取中止代碼後,unacev2.dll並沒有中止操作。由於延遲檢查WinRAR回調的返回代碼,因此會創建漏洞利用文件中指定的目錄。

提取的文件會在在exploit文件中指定的完整路徑上創建的(空文件)。

從回調中檢查返回的代碼(在調用WriteFile API之前)之後立即刪除它。可以繞過刪除文件的方法,但只能創建空文件。

漏洞利用

ACE文件,改名為.rar格式

Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)

執行後觸發漏洞,會創建文件C:\some_folder\some_file.txt。該路勁可以替換為其他更危險的目錄造成其他攻擊,比如啟動項:

Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)

影響版本

WinRAR 5.70 Beta 1以下版本

Bandizip4.0.0.1170及以下版本

360 壓縮4.0.0.1170及以下版本

好壓(2345 壓縮) 5.9.8.10907及以下版本

7zip幾年前已經刪除了調用該動態鏈接庫的,所以不受該漏洞影響,7zip是開源免費,支持多格式的壓縮軟件,建議大家使用。

修復建議

版本升級

儘快升級到最新版本的 WinRAR和上面提及的涉及軟件。 WinRAR請升級到 5.70 Beta 1,其他軟件等各官方更新後請自行升級。

刪除涉及動態鏈接庫

為了避免攻擊可以刪除涉及的dll文件UNACEV2.dll,可以使用搜索(Everything等軟件)。WinRAR中UNACEV2.dll截圖如下:

Widows下壓縮軟件WinRAR 代碼執行漏洞(CVE-2018-2025*)


分享到:


相關文章: