# 微軟Windows系統存在嚴重0day漏洞,可能危及Web3安全近期,微軟發布的安全補丁中修復了一個正在被黑客利用的Windows系統提權漏洞。這個漏洞主要存在於早期Windows系統版本中,無法在Windows 11上觸發。這類win32k提權漏洞由來已久。在當前各種安全防護措施不斷完善的背景下,攻擊者如何繼續利用這個漏洞值得關注。我們在Windows Server 2016環境下對這個漏洞進行了深入分析。0day漏洞指尚未公開披露和修復的系統漏洞,可被黑客悄無聲息地利用,具有極大的破壞性。通過這個Windows系統層面的0day漏洞,黑客可能獲取系統的完全控制權。一旦系統被黑客控制,後果包括但不限於個人信息泄露、系統崩潰數據丟失、財務損失、惡意軟件植入等。對個人用戶來說,加密貨幣私鑰可能被竊取,數字資產被轉移;從更大範圍看,這個漏洞甚至可能影響整個基於Web2基礎設施運行的Web3生態。通過分析補丁代碼,我們發現問題出在一個對象的引用計數被多處理了一次。參考早期源碼注釋可知,以前的代碼只鎖定了窗口對象,沒有鎖定窗口對象中的菜單對象,導致菜單對象可能被錯誤引用。我們構造了一個特殊的多層嵌套菜單結構來觸發這個漏洞。通過精心設計菜單屬性和引用關係,可以在某些函數返回用戶層時成功釋放特定菜單對象,導致後續代碼引用無效對象。利用這個漏洞的關鍵在於如何控制cbwndextra參數爲一個特別大的值。我們最終選擇通過布局內存,控制相鄰對象的內存數據來實現這一目標。爲了構建穩定的漏洞利用,我們設計了一種特殊的內存布局方式,包含連續的多個窗口對象和窗口類對象。通過釋放和重新佔用特定對象,可以實現對關鍵參數的控制。在讀寫原語方面,我們使用GetMenuBarInfo()實現任意讀,使用SetClassLongPtr()實現任意寫。除了替換TOKEN的寫入操作外,其他寫入都是利用第一個窗口對象的class對象使用偏移來完成。雖然微軟正在嘗試使用Rust重構win32k相關代碼,但對於現有Windows系統,這類漏洞仍然構成嚴重威脅。漏洞利用過程相對簡單,主要依賴於桌面堆句柄地址的泄露。我們推測這個漏洞的發現可能得益於更完善的代碼覆蓋率檢測技術。未來針對這類漏洞的檢測,除了關注漏洞觸發函數的關鍵點,還應該重視對異常內存布局和數據讀寫的檢測。
Windows 0day漏洞威脅Web3資產安全 專家詳解攻擊原理
微軟Windows系統存在嚴重0day漏洞,可能危及Web3安全
近期,微軟發布的安全補丁中修復了一個正在被黑客利用的Windows系統提權漏洞。這個漏洞主要存在於早期Windows系統版本中,無法在Windows 11上觸發。
這類win32k提權漏洞由來已久。在當前各種安全防護措施不斷完善的背景下,攻擊者如何繼續利用這個漏洞值得關注。我們在Windows Server 2016環境下對這個漏洞進行了深入分析。
0day漏洞指尚未公開披露和修復的系統漏洞,可被黑客悄無聲息地利用,具有極大的破壞性。通過這個Windows系統層面的0day漏洞,黑客可能獲取系統的完全控制權。
一旦系統被黑客控制,後果包括但不限於個人信息泄露、系統崩潰數據丟失、財務損失、惡意軟件植入等。對個人用戶來說,加密貨幣私鑰可能被竊取,數字資產被轉移;從更大範圍看,這個漏洞甚至可能影響整個基於Web2基礎設施運行的Web3生態。
通過分析補丁代碼,我們發現問題出在一個對象的引用計數被多處理了一次。參考早期源碼注釋可知,以前的代碼只鎖定了窗口對象,沒有鎖定窗口對象中的菜單對象,導致菜單對象可能被錯誤引用。
我們構造了一個特殊的多層嵌套菜單結構來觸發這個漏洞。通過精心設計菜單屬性和引用關係,可以在某些函數返回用戶層時成功釋放特定菜單對象,導致後續代碼引用無效對象。
利用這個漏洞的關鍵在於如何控制cbwndextra參數爲一個特別大的值。我們最終選擇通過布局內存,控制相鄰對象的內存數據來實現這一目標。
爲了構建穩定的漏洞利用,我們設計了一種特殊的內存布局方式,包含連續的多個窗口對象和窗口類對象。通過釋放和重新佔用特定對象,可以實現對關鍵參數的控制。
在讀寫原語方面,我們使用GetMenuBarInfo()實現任意讀,使用SetClassLongPtr()實現任意寫。除了替換TOKEN的寫入操作外,其他寫入都是利用第一個窗口對象的class對象使用偏移來完成。
雖然微軟正在嘗試使用Rust重構win32k相關代碼,但對於現有Windows系統,這類漏洞仍然構成嚴重威脅。漏洞利用過程相對簡單,主要依賴於桌面堆句柄地址的泄露。
我們推測這個漏洞的發現可能得益於更完善的代碼覆蓋率檢測技術。未來針對這類漏洞的檢測,除了關注漏洞觸發函數的關鍵點,還應該重視對異常內存布局和數據讀寫的檢測。