透過資料二極體傳送日誌、警示與遙測資料

了解詳情
我們利用人工智慧進行網站翻譯,雖然我們力求準確性,但它們可能並不總是 100% 精確。感謝您的理解。

CVE-2025-8088 技術分析:WinRAR 透過 ADS 實現任意檔案寫入

作者: OPSWAT 發布
最後更新時間:
分享此文章

CVE-2025-8088 是 WinRAR 中的路徑遍歷漏洞,影響 7.13 之前的版本。利用此漏洞可使特製的壓縮檔在解壓縮過程中繞過檔名與路徑驗證機制,並將攻擊者控制的內容寫入 NTFS 磁碟區的特定位置。在特定條件下,此寫入能力可被利用來執行遠端程式碼。

OPSWAT 研究員計畫的研究生研究員針對 CVE-2025-8088 進行了技術分析。本次針對 RAR5 和 NTFS (ADS) 機制所進行的分析結果,追溯了導致不安全寫入的資料擷取工作流程及 ADS 處理路徑,並為網路安全從業人員及組織總結了實用的緩解與修復指引。

CVE-2025-8088 簡介

WinRAR 是 Windows 平台上最常用的壓縮工具之一。它支援保留與還原 NTFS 專屬的元資料,例如 ADS(替代資料流)。CVE-2025-8088 存在於特定 WinRAR 版本的 ADS 處理邏輯中。在受影響的版本中,惡意壓縮檔可篡改解壓縮過程中使用的流識別碼;由於 ADS 建立流程中的路徑正規化與驗證機制不足,將導致目錄遍歷漏洞。

CVE-2025-8088 被評估為高嚴重性漏洞,其 CVSS v4.0 基礎分數為 8.4(高),這反映出若使用者使用存在此漏洞的 WinRAR 版本來解壓縮經過特殊設計的壓縮檔,可能會造成可量化的安全影響。

技術背景

NTFS 替代資料流

NTFS(新技術檔案系統)是現代 Windows 版本的預設檔案系統。相較於基於 FAT 的檔案系統,NTFS 支援多項進階功能,包括 ACL(存取控制清單)、EFS 加密、壓縮、硬連結、重新解析點(接點與符號連結)以及 ADS。 

ADS 是一項 NTFS 功能,允許單一檔案或目錄包含多個獨立的資料串流。主要且使用者可見的內容儲存於未命名的預設串流中,通常表示為 ::$DATA,而其他命名串流則可透過以下語法存取: 

filename.ext:streamname 

這些命名串流通常不會在標準的 Windows 檔案總管檢視中顯示,但檔案系統完全支援它們,且可透過相容的工具進行清點。例如,執行dir/R 即可顯示替代串流。 

WinRAR 支援解壓縮包含 ADS 語法的壓縮檔項目。當壓縮檔中存在此類項目時,WinRAR 會在解壓縮過程中將對應的內容寫入目標檔案的替代串流中。 

了解 RAR5 檔案結構

RAR5 壓縮檔是以一連串區塊的形式儲存的。每個區塊開頭都有一個標頭,用以定義該區塊的類型與大小資訊。此外,該區塊可選擇性地包含額外的元資料區,以及由有效載荷位元組(例如壓縮內容)組成的資料區。

區塊 = 標頭 + (可選的額外區域) + (可選的資料區域)

RAR5 採用了多種區塊類型。CVE 中相關的區塊類型包括:

  • 檔案標頭(類型 2):描述歸檔檔中的檔案條目(名稱/路徑、屬性、時間戳記、壓縮參數),其後緊接該檔案的有效載荷資料
  • 服務標頭(類型 3):可選的補充標頭,用於儲存與存檔或特定檔案條目相關的額外元資料,例如 ADS

在 NTFS 檔案系統中,ADS 由一個稱為 STM 的服務標頭(類型 3)表示。服務標頭的資料區包含基礎檔案條目的 ADS 流位元組。

簡化版:

圖 1. NTFS 檔案系統中的 ADS

技術分析 (CVE-2025-8088)

RAR5 解壓縮工作流程

WinRAR 將 RAR5 壓縮檔視為一連串的區塊進行處理。在解壓縮過程中,它會遍歷這些區塊,解析每個區塊的標頭,並利用內嵌的 CRC32 驗證標頭完整性後才繼續處理。處理完一個檔案條目後,WinRAR 會將基礎檔案內容解壓縮並寫入磁碟,然後透過相關的服務記錄來判斷是否需要套用額外的 NTFS 相關元資料。 當存在 ADS(替代資料流)記錄(例如 STM 服務條目)時,WinRAR 會進入 ADS 處理路徑,將基礎檔案路徑與資料流名稱結合以形成 ADS 目標,並建立該資料流。 

圖 2. 分析過程中重建的高階提取流程,包含 ADS 處理分支。

在 CVE-2025-8088 中,根本原因在於 ADS 流的建立會使用源自存檔控制元資料的路徑來呼叫 WindowsAPI (),導致 ADS 路徑的建構與驗證不足以防止目錄遍歷。

識別 ADS(「STM」)程式路徑

我們的研究生研究員在受控的實驗室環境中,使用 WinRAR 7.12 進行了靜態與動態分析的結合。他們透過在二進位檔中搜尋「STM」服務標記來定位與 ADS 相關的邏輯,並在執行階段確認了提取端的程式碼路徑。

圖 3. 兩個引用字串「STM」的程式碼位置,該字串用於識別與 ADS 相關的處理程序。

透過在提取包含 ADS 資料的存檔時,於「STM」參照處設定中斷點,該中斷點始終被觸發,這證實了此執行路徑會在正常的提取工作流程中被調用。

圖 4. 動態分析:在 ADS 處理路徑中觸發了斷點。

當觸發中斷點時,透過調用堆疊重建了 WinRAR 使用者介面中「萃取」操作後所呼叫的函式序列,從而為後續的區塊處理及 ADS 執行路徑建立了明確的基準點。

圖 5. 執行 WinRAR 解壓縮後恢復的呼叫序列,用於識別 ADS 程式碼路徑。

標頭解析與 CRC32 驗證

WinRAR 處理每個 RAR5 區塊的方式,是先讀取區塊標頭、驗證完整性欄位,然後將處理工作交由對應該區塊類型的處理常式執行。圖 6-10 顯示了區塊處理的入口點及相關的標頭解析邏輯:WinRAR 會將檔案指標設定為當前區塊的偏移量,讀取包含標頭類型與大小的初始標頭位元組,並在繼續處理前使用 CRC32 驗證標頭完整性。

驗證成功後,它會解析其他標頭欄位,例如標記、解壓縮後大小、壓縮方式以及可選的校驗和。接著,它會處理區塊主體。

圖 6. 萃取過程中區塊處理的起始點。
圖 7. 設定存檔檔案指標並進入標頭解析階段。
圖 8. 解析初始標頭位元組並驗證標頭的 CRC32。

在逆向工程過程中,觀察到 CRC32 例程的運作方式與標準的 zlib 風格 CRC32 實作一致。實際上,此 CRC32 檢查充當了完整性檢查機制。若標頭欄位遭到修改,必須更新嵌入的 CRC32,以確保 WinRAR 能接受該標頭並繼續處理。

圖 9. 完整性檢查過程中使用的 CRC32 實作細節(表驅動)。

在驗證 CRC32 標頭後,解析器會繼續提取其餘的標頭資訊,例如解壓縮後的大小、壓縮方式及其他屬性。

圖 10. 解析其他標頭欄位(大小、標記、壓縮方式及可選的校驗和)。

在完成標頭解析與驗證後,WinRAR 會根據解析出的標頭類型和標記來處理區塊內容。

圖 11. 此迴圈會在解壓縮過程中解壓縮並寫入檔案內容。

在 CVE-2025-8088 中,WinRAR 在將處理 ADS 記錄的 Service 區塊處理程序調度之前,會先執行標頭完整性驗證。

透過服務區塊(“STM”)建立 ADS

當 WinRAR 遇到 Service 區塊時,便會進入 ADS 處理路徑。Service 區塊使用區塊類型值 3。當偵測到 Service 區塊時,WinRAR 會將其分派給服務標頭處理程式。

圖 12. 調度服務區塊(第 3 型),可攜帶 ADS 記錄。

在服務處理程序中,WinRAR 會檢查服務名稱。當服務名稱與「STM」相符時,該記錄將被視為 ADS 有效載荷,此時程式執行流程會轉入 ADS 建立例程。

圖 13. 服務記錄發送:當服務名稱與「STM」相符時,WinRAR 會進入 ADS 建立階段。

WinRAR 隨後從服務記錄中擷取流名稱,並將其與基礎檔案路徑結合,以建構最終的 ADS 目標。分析顯示,在 7.13 版本之前,流名稱並未經過充分的清理,導致遍歷序列能夠影響最終目標路徑的解析結果。

圖 14. 從服務記錄中擷取 ADS 串流名稱。
圖 15. 將基礎路徑與串流名稱結合,以形成 ADS 路徑。

在建立目標後,WinRAR 會透過一個呼叫 Windows CreateFileWAPI 的輔助例程來建立資料流,然後使用 WriteFile 寫入 ADS 位元組。如果解析後的路徑位於使用者選定的解壓縮目錄之外,WinRAR 將會建立目標資料流/檔案,並將其填入攻擊者所控制的內容。

圖 16. 在提取過程中觸發 ADS 建立的呼叫位置。
圖 17. 將任務委派給檔案建立例程的 ADS 建立輔助程式。
圖 18. 透過已建構的路徑呼叫 WindowsAPI ,以建立 ADS 串流。
圖 19. 透過 WriteFile 將攻擊者控制的 ADS 內容寫入新建立的串流中。

總而言之,ADS 提取工作流程暴露了兩項與安全性相關的漏洞。首先,ADS 流名稱未經過充分的清理,導致遍歷序列能影響最終的目標路徑。其次,WinRAR 透過呼叫 CreateFileW() 並傳入由存檔控制的元資料所衍生的路徑,來建立 ADS 流。

這些條件結合起來,會使經過精心設計的存檔能夠將 CreateFileW() 目標導向預定解壓縮目錄之外,並將攻擊者控制的內容寫入攻擊者所能操控的位置。如果目標位置是與持久化相關的目錄(例如使用者的「啟動」資料夾),則根據載荷類型和系統設定的不同,此寫入操作可能導致在下次登入或重新開機時執行後續程式碼。

攻擊場景

在攻擊者誘使使用者使用存在漏洞的 WinRAR 版本來解壓縮經過特殊設計的 RAR 壓縮檔時,CVE-2025-8088 便可能遭到實際利用。典型的攻擊途徑是社會工程學手段(例如網路釣魚),藉此使受害者信任惡意壓縮檔,並在關鍵系統上執行解壓縮操作。

該壓縮檔內嵌了一個 ADS(「STM」)服務記錄。其串流名稱的建構方式旨在引入遍歷語意。在 NTFS 系統上進行解壓縮時,WinRAR 會處理該 ADS 記錄,並根據壓縮檔控制的元資料推導出目標串流路徑。由於此 ADS 路徑的建構缺乏足夠的限制,解析出的目標位置可能超出使用者選定的解壓縮目錄範圍,甚至可能包含使用者啟動資料夾等關鍵位置。

圖 20. 端到端攻擊流程:傳送、利用存在漏洞的 WinRAR 進行資料擷取,以及透過「啟動」資料夾實現持久化。

概念驗證

為了演示 CVE-2025-8088,我們的研究生研究員準備了一個經過特殊設計的 RAR 壓縮檔,其中包含一個 ADS(「STM」)服務記錄,其字段由攻擊者控制。此壓縮檔的結構中,ADS 流名稱包含橫向遍歷序列。 此結構會影響 ADS 處理過程中的最終目標位置,包括建立資料流時傳遞給 CreateFileW() 的路徑。為確保 WinRAR 能接受修改後的元資料並進入 ADS 處理路徑,相關標頭的 CRC32 值已重新計算,使壓縮檔能通過標頭完整性驗證。 

圖 21. 用於驅動 ADS 路徑的經特殊設計的壓縮檔中,由攻擊者控制的欄位範例。

當易受攻擊的 WinRAR 版本在解壓縮經特殊設計的壓縮檔時進入 ADS 處理例程,它會將攻擊者控制的內容寫入預先選定的目的地,而非使用者原本選定的解壓縮目錄。解壓縮完成後,載荷的執行方式取決於其格式以及預先選定目的地的執行語義。例如,某些位置可能會在下次登入或重新開機時執行內容。

圖 22. 概念驗證示範:透過存在漏洞的提取路徑,將有效載荷寫入 Startup。

修復

可透過在所有受管終端裝置上將 WinRAR 更新至已修補的版本(7.13 或更新版本),來降低 CVE-2025-8088 的風險。若無法及時更新,則必須考慮採取補償性控制措施,例如:

  • 在無需保留 ADS 的情況下,限制或停用歸檔工具中的 ADS 保留功能
  • 將不可信檔案的解壓縮操作限制在隔離環境中
  • 實施最小權限原則(避免以提升權限的方式執行資料擷取工具)
  • 監控關鍵目錄(例如啟動位置),以偵測源自檔案解壓縮工作流程的意外寫入操作

為了及早vulnerability detection 高vulnerability detection 迅速進行MetaDefender 能識別運行易受攻擊 WinRAR 版本的裝置,並標示所需更新,從而支援緊急修復作業。其強大的漏洞與修補程式管理功能支援超過 1100 款應用程式,可主動識別運行未修補或過時作業系統及第三方應用程式的端點裝置,並提供建議的修復方案。

「Vulnerability Management 」Vulnerability Management 可協助管理員快速偵測系統漏洞、優先處理修復工作,並推動系統升級至已修補的版本,從而降低基於檔案寫入的攻擊(例如 CVE-2025-8088)以及類似終端點威脅的風險。

圖 23.MetaDefender Endpoint 存在安全漏洞的 WinRAR,並建議更新至已修復的版本。
標籤:

隨時瞭解OPSWAT 的最新資訊!

立即註冊,即可收到公司的最新消息、 故事、活動資訊等。