📢 Gate廣場 #MBG任务挑战# 發帖贏大獎活動火熱開啓!
想要瓜分1,000枚MBG?現在就來參與,展示你的洞察與實操,成爲MBG推廣達人!
💰️ 本期將評選出20位優質發帖用戶,每人可輕鬆獲得50枚MBG!
如何參與:
1️⃣ 調研MBG項目
對MBG的基本面、社區治理、發展目標、代幣經濟模型等方面進行研究,分享你對項目的深度研究。
2️⃣ 參與並分享真實體驗
參與MBG相關活動(包括CandyDrop、Launchpool或現貨交易),並曬出你的參與截圖、收益圖或實用教程。可以是收益展示、簡明易懂的新手攻略、小竅門,也可以是現貨行情點位分析,內容詳實優先。
3️⃣ 鼓勵帶新互動
如果你的帖子吸引到他人參與活動,或者有好友評論“已參與/已交易”,將大幅提升你的獲獎概率!
MBG熱門活動(帖文需附下列活動連結):
Gate第287期Launchpool:MBG — 質押ETH、MBG即可免費瓜分112,500 MBG,每小時領取獎勵!參與攻略見公告:https://www.gate.com/announcements/article/46230
Gate CandyDrop第55期:CandyDrop x MBG — 通過首次交易、交易MBG、邀請好友註冊交易即可分187,500 MBG!參與攻略見公告:https://www.gate.com/announcements
Windows系統0day漏洞引發Web3安全隱患 專家解析利用過程
微軟Windows系統0day漏洞分析與利用
近期微軟發布的安全補丁中包含了一個正在被利用的win32k提權漏洞。該漏洞主要存在於早期Windows系統版本中,無法在Windows 11上觸發。本文將分析在當前安全防護不斷加強的背景下,攻擊者如何繼續利用這類漏洞。我們的分析過程是在Windows Server 2016環境下完成的。
漏洞背景
0day漏洞指尚未公開且未修復的安全漏洞,類似於金融市場中的T+0交易概念。此類漏洞一旦被發現可能會在不被察覺的情況下被惡意利用,造成巨大破壞。
本次發現的Windows系統0day漏洞可讓攻擊者獲得系統的完全控制權。這可能導致個人信息泄露、系統崩潰、數據丟失、財務損失等嚴重後果。從Web3角度看,用戶的私鑰可能被盜取,數字資產被轉移。更大範圍來說,這個漏洞可能會影響整個基於Web2基礎設施運行的Web3生態系統。
漏洞分析
通過分析補丁代碼,我們發現這是一個對象引用計數錯誤的問題。早期win32k代碼中的注釋顯示,以前只鎖定了窗口對象,沒有鎖定窗口中的菜單對象,這可能導致菜單對象被錯誤引用。
進一步分析發現,在xxxEnableMenuItem函數中,返回的菜單對象可能是窗口主菜單,也可能是子菜單甚至更深層的菜單。這爲構造POC提供了思路。
POC實現
我們構造了一個特殊的多層菜單結構,包含四個有特定關係的菜單對象。通過精心設置這些菜單的屬性和關係,可以繞過xxxEnableMenuItem函數的檢測,並在函數返回時釋放關鍵的菜單對象。這樣在後續引用該對象時就會觸發UAF漏洞。
漏洞利用(EXP)實現
整體思路
我們考慮了兩種利用方向:執行shellcode和利用讀寫原語修改token。最終選擇了後者,因爲它在高版本Windows上更可行。我們將整個利用過程分爲兩步:如何通過UAF控制cbwndextra值,以及如何利用受控的cbwndextra實現穩定的讀寫原語。
初始數據寫入
我們利用窗口類WNDClass的名稱對象來佔用被釋放的菜單對象內存。通過分析各種可能的寫入點,最終選擇了在xxxRedrawWindow函數中利用對象標志位的AND操作來寫入HWNDClass的cb-extra值。
內存布局
我們設計了一個由三個連續HWND對象組成的內存布局,中間的對象被釋放並被HWNDClass對象佔用。前後的HWND對象分別用於繞過檢測和實現最終的讀寫原語。通過泄露的內核句柄地址,我們可以精確控制這些對象的排列。
讀寫原語實現
任意讀操作使用GetMenuBarInfo函數,任意寫操作則使用SetClassLongPtr函數。除了TOKEN的寫入依賴第二個窗口的class對象,其他寫入操作都利用第一個窗口對象的class對象通過偏移來實現。
總結
微軟正在嘗試使用Rust重構win32k代碼,未來此類漏洞可能在新系統中被徹底解決。
這類漏洞的利用過程相對簡單,主要難點在於如何控制第一次數據寫入。
漏洞的發現可能得益於更完善的代碼覆蓋率檢測技術。
對於漏洞檢測而言,除了關注觸發函數的關鍵點,還應該檢測異常的內存布局和數據讀寫操作。