💙 Gate广场 #Gate品牌蓝创作挑战# 💙
用Gate品牌蓝,描绘你的无限可能!
📅 活动时间
2025年8月11日 — 8月20日
🎯 活动玩法
1. 在 Gate广场 发布原创内容(图片 / 视频 / 手绘 / 数字创作等),需包含 Gate品牌蓝 或 Gate Logo 元素。
2. 帖子标题或正文必须包含标签: #Gate品牌蓝创作挑战# 。
3. 内容中需附上一句对Gate的祝福或寄语(例如:“祝Gate交易所越办越好,蓝色永恒!”)。
4. 内容需为原创且符合社区规范,禁止抄袭或搬运。
🎁 奖励设置
一等奖(1名):Gate × Redbull 联名赛车拼装套装
二等奖(3名):Gate品牌卫衣
三等奖(5名):Gate品牌足球
备注:若无法邮寄,将统一替换为合约体验券:一等奖 $200、二等奖 $100、三等奖 $50。
🏆 评选规则
官方将综合以下维度评分:
创意表现(40%):主题契合度、创意独特性
内容质量(30%):画面精美度、叙述完整性
社区互动度(30%):点赞、评论及转发等数据
微软Windows早期版本0day漏洞分析:从提权到利用全流程
微软Windows系统0day漏洞分析及利用
近期,微软发布的安全补丁中修复了一个正在被利用的win32k提权漏洞。该漏洞仅存在于早期Windows系统版本中,无法在Windows 11上触发。本文将分析在当前安全防护不断完善的背景下,攻击者如何继续利用此类漏洞。
漏洞背景
0day漏洞指尚未公开且未被修复的安全漏洞,类似于金融市场的T+0交易概念。此类漏洞一旦被发现可能会在未被察觉的情况下被恶意利用,造成巨大危害。
本次发现的Windows系统0day漏洞可使攻击者获取系统完全控制权。这可能导致个人信息泄露、系统崩溃、数据丢失、财产损失等严重后果。从Web3角度看,可能造成私钥被盗、数字资产被转移,甚至影响整个基于Web2基础设施的Web3生态。
补丁分析
分析补丁代码发现,问题出在对象引用计数的多次处理。通过查看早期源码注释可知,以前的代码只锁定了窗口对象,而未锁定窗口中的菜单对象,可能导致菜单对象被错误引用。
漏洞复现
通过分析漏洞函数上下文,发现传入xxxEnableMenuItem()的菜单通常已在上层函数被锁定。进一步分析发现,MenuItemState函数返回的菜单可能是窗口主菜单,也可能是子菜单或子子菜单。
为触发漏洞,构造了一个特殊的四层菜单结构,并设置了以下特征:
在xxxRedrawTitle返回用户层时,删除菜单C和B的引用关系并释放菜单C。这样在xxxEnableMenuItem函数返回点时,即将引用的菜单C对象已失效。
漏洞利用
漏洞利用主要考虑两个方向:
执行shellcode代码:参考早期CVE-2017-0263等漏洞,但在高版本Windows中可能面临入口点和SMEP等安全机制问题。
利用读写原语修改token地址:近年来有多个公开exp可参考,对桌面堆内存布局和读写原语具有通用性。关键是分析如何在UAF内存重用时首次控制cbwndextra为特大值。
本次利用采用第二种方案,将整个过程分为两步:
首次数据写入
漏洞触发后,系统可能在MNGetPopupFromMenu()和xxxMNUpdateShownMenu()中错误使用被控制的窗口对象数据。我们使用窗口类WNDClass中的窗口名称对象占用释放的菜单对象。
关键是找到一个可由我们构建的地址结构中能任意写入数据的位置,哪怕只有一个字节。最终选择了xxxRedrawWindow函数中的方案,通过布局内存控制前一个对象的内存数据来通过函数中的对象标志判断。
稳定的内存布局
设计至少三个连续的0x250字节HWND对象,释放中间一个并用HWNDClass对象占用。前一个HWND对象尾部数据用于通过xxxRedrawWindow中的标志检验,后一个HWND对象的菜单对象和HWNDClass对象用作最终读写原语媒介。
通过堆内存中泄露的内核句柄地址来精确判断申请的窗口对象是否按预期顺序排列。
读写原语
任意读原语使用GetMenuBarInfo(),任意写原语使用SetClassLongPtr()。除替换TOKEN的写入外,其他写入都利用第一个窗口对象的class对象使用偏移来写入。
总结
win32k漏洞历史悠久,但微软正在尝试用Rust重构相关代码,未来新系统中此类漏洞可能被杜绝。
该漏洞利用过程相对简单,主要难点在于如何控制首次写入。严重依赖桌面堆句柄地址泄露,这仍是老旧系统的安全隐患。
该漏洞的发现可能得益于更完善的代码覆盖率检测。
对于漏洞利用检测,除关注触发函数关键点外,还应关注异常的内存布局和窗口数据偏移读写。