🎉 Gate xStocks 交易開啓啦,現貨、合約、Alpha齊上線!
📝 在Gate廣場發帖,曬出你的交易體驗或精彩截圖,瓜分$1,000大獎池!
🎁 廣場優質創作者5名,每人獨享$100合約體驗券!
🎉 帖文同步分享到X(推特),瀏覽量前十再得$50獎勵!
參與方式:
1️⃣ 關注 @Gate廣場_Official
2️⃣ 帶 #Gate xStocks 交易体验# ,原創發帖(不少於20字,僅用活動標籤)
3️⃣ 若分享到推特,請將連結提交表單:https://www.gate.com/questionnaire/6854
注:表單可多次提交,發布更多帖文可提升獲獎機會!
📅 7月3日16:00—7月9日24:00(UTC+8)
詳情:https://www.gate.com/announcements/article/45926
每一條體驗,都有機會贏取大獎!快在Gate廣場show出你的操作吧!
Windows系統0day漏洞分析:從win32k提權到Web3安全風險
微軟Windows系統0day漏洞分析與利用
近期,微軟發布的安全補丁中修復了一個正被積極利用的win32k提權漏洞。該漏洞主要影響早期Windows系統版本,而在Windows 11上似乎無法觸發。本文將分析在當前安全環境下,攻擊者可能如何繼續利用這類漏洞。以下分析基於Windows Server 2016環境完成。
漏洞背景
0day漏洞指未公開且未修復的安全漏洞,類似於金融市場中的T+0交易概念。此類漏洞一旦被惡意利用,可能造成嚴重危害。本次發現的Windows系統0day漏洞可讓攻擊者獲得系統完全控制權,進而實施信息竊取、系統破壞、惡意軟件植入等攻擊。從Web3角度看,這可能導致私鑰被盜、數字資產被轉移,甚至危及基於Web2基礎設施的整個Web3生態。
補丁分析
分析補丁代碼發現,主要修復了一個對象引用計數處理的問題。結合早期win32k源碼注釋可知,原代碼僅鎖定了窗口對象,而未鎖定窗口中的菜單對象,可能導致菜單對象被錯誤引用。
漏洞利用概念驗證(PoC)
分析發現,xxxEnableMenuItem函數中的MenuItemState可能返回窗口主菜單或子菜單。我們構造了一個特殊的四層菜單結構,包含以下特徵:
觸發漏洞時,在xxxRedrawTitle返回用戶層時刪除菜單C和B的關聯,釋放菜單C。這導致xxxEnableMenuItem函數後續引用無效的菜單C對象。
漏洞利用(Exp)實現
整體思路
考慮兩種可能的利用方向:
執行shellcode:參考早期CVE-2017-0263等漏洞,但在新版Windows中可能面臨諸多障礙。
利用讀寫原語修改token:近年來仍有公開exp可借鑑,主要需解決如何首次控制cbwndextra值的問題。
我們採用第二種方案,將exp拆分爲控制cbwndextra值和建立穩定讀寫原語兩個步驟。
首次數據寫入
利用窗口類WNDClass的名稱對象佔用釋放的菜單對象內存。在xxxRedrawWindow函數中找到可寫入數據的位置,通過控制前一個對象內存數據來滿足函數中的標志檢查。
穩定內存布局
設計連續三個0x250字節HWND對象的內存布局,釋放中間對象並用HWNDClass對象佔用。前後HWND對象分別用於通過函數檢查和實現讀寫原語。通過內核句柄地址泄露來精確定位對象排列。
讀寫原語實現
任意讀使用GetMenuBarInfo函數,任意寫使用SetClassLongPtr函數。除TOKEN寫入外,其他寫入操作均通過第一個窗口對象的class對象完成。
結論
微軟正在使用Rust重構win32k代碼,未來可能徹底解決此類漏洞。
此類漏洞利用主要依賴桌面堆句柄地址泄露,對老舊系統仍構成安全隱患。
該漏洞的發現可能得益於更完善的代碼覆蓋率檢測。
對異常內存布局和窗口數據讀寫的監測有助於發現類似漏洞。
给文章的评论:
rust就能拯救win了?整笑了