🎉 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了?整笑了