【漏洞分析】CVE-2022-41049
11/08 Windows 的 Patch Tuesday 中修補了兩個關於 Bypass Mark-of-the-Web (MOTW) 的漏洞,分別是 CVE-2022-41049 和 CVE-2022-41091,在 Exploring ZIP Mark-of-the-Web Bypass Vulnerability (CVE-2022-41049) 這篇部落格中,有詳細的分析這個漏洞的細節,也是本篇部落格主要參考的來源
這個漏洞最早在 6 月在 twitter 上 Will Dormann 的貼文中 就有提及
並且在 10 月就有在野外觀察到這個漏洞被利用
Alternative Data Stream (ADS)
要解釋這個漏洞之前,要先說明一下什麼是 Alternative Data Stream (ADS)
ADS 是 NTFS 檔案系統的一個功能,允許一個檔案可以有多個 Stream,也就是雖然檔名是一樣的,但是透過不同的 Stream 可以存取到不同的資料
比如 test.txt
這個檔案可以有好幾種不同的 Stream
test.txt::$DATA
test.txt:Zone.Identifier
test.txt:Hello
test.txt:World
MOTW
瀏覽器會把從網路下載下來的檔案,新增一個 Zone.Identifier
的 Stream,這就是傳說中的 Mark-of-the-Web (MOTW)
我們可以用 Powershell 下指令 Get-Item <filename> -Stream *
來列出某個檔案的所有 Stream 如下圖所示
接著用 Get-Content <filename> -Stream Zone.Identifier
去印出 Zone.Identifier
Stream 裡面的資料如下圖所示
可以看到 Zone.Identifier
Stream 裡面存了 ZoneId
和 HostUrl
這些 metadata
那有 MOTW 的檔案可以做什麼?
有 MOTW 的檔案就等於給其他軟體們一個資訊,這個檔案是來自網路,像是 WORD, EXCEL, Visual Studio 等軟體以及 Windows 本身,在處理這些檔案的時候就會格外小心,並且對使用者發出額外的警告,像是如下圖的這些警告
CVE-2022-41049
背景知識都補充足夠了,那這個 CVE-2022-41049 的漏洞又是出了什麼問題
正常情況中,檔案總管 (Explorer) 在解壓縮 zip 的時候,會把 zip 檔案的 MOTW 複製到解壓縮出來的所有檔案上面
但是只要那個 zip 檔案是用某個特別的方法製作的時候,MOTW 就不會被傳遞下去,也就成功 Bypass MOTW
這個特別的製作方法,說起來也不是那麼特別,其實也是正常的 feature
只要你的檔案在壓縮的時候是 read-only 的
在解壓縮的時候,因為檔案是 read-only 的關係,所以檔案總管就無法去寫入 MOTW 到解壓縮出的檔案上面
就是這麼簡單,非常簡單就可以實作
這篇 Exploring ZIP Mark-of-the-Web Bypass Vulnerability (CVE-2022-41049) 部落格中,作者做了非常深入的調查,最後才發現只是這麼簡單的原因,原文分析的思路也推薦大家可以看看
除了 zip,其他的打包格式比如 iso, vhd, gzip 等,也是新的 bypass MOTW 的方法
整體來看,Mark-of-the-Web (MOTW) 其實不算是一個 Security Boundary,比較像是一個額外的警告功能,使用者在下載網路上的資源的時候還是要謹慎小心,多看幾眼xD
【漏洞分析】CVE-2022-41049