🎉 亲爱的广场小伙伴们,福利不停,精彩不断!目前广场上这些热门发帖赢奖活动火热进行中,发帖越多,奖励越多,快来 GET 你的专属好礼吧!🚀
🆘 #Gate 2025年中社区盛典# |广场十强内容达人评选
决战时刻到!距离【2025年中社区盛典】广场达人评选只剩 1 天,你喜爱的达人,就差你这一票冲进 C 位!在广场发帖、点赞、评论就能攒助力值,帮 Ta 上榜的同时,你自己还能抽大奖!iPhone 16 Pro Max、金牛雕塑、潮流套装、合约体验券 等你抱走!
详情 👉 https://www.gate.com/activities/community-vote
1️⃣ #晒出我的Alpha积分# |晒出 Alpha 积分&收益
Alpha 积分党集合!带话题晒出你的 Alpha 积分图、空投中奖图,即可瓜分 $200 Alpha 代币盲盒,积分最高直接抱走 $100!分享攒分秘籍 / 兑换经验,中奖率直线上升!
详情 👉 https://www.gate.com/post/status/12763074
2️⃣ #ETH百万矿王争霸赛# |ETH 链上挖矿晒收益
矿工集结!带话题晒出你的 Gate ETH 链上挖矿收益图,瓜分 $400 晒图奖池,收益榜第一独享 $200!谁才是真 ETH 矿王?开晒见分晓!
详情 👉 https://www.gate.com/pos
Windows内核严重漏洞分析:提权风险或威胁加密资产安全
微软Windows系统严重漏洞分析
近期,微软发布的安全补丁中修复了一个正被黑客在野利用的Windows内核提权漏洞。该漏洞主要影响早期Windows系统版本,无法在Windows 11上触发。这类漏洞由来已久,本文将探讨在当前安全防护不断加强的背景下,攻击者如何继续利用此类漏洞。
本次分析基于Windows Server 2016环境完成。
漏洞背景
这是一个零日漏洞,指尚未公开且未修复的系统漏洞。黑客可以在用户毫无察觉的情况下利用零日漏洞发动攻击,具有极大破坏性。
本次发现的零日漏洞存在于Windows系统内核层面,黑客可通过该漏洞获取Windows的完整控制权。这可能导致用户隐私泄露、系统崩溃、数据丢失、财务损失等严重后果。从Web3角度看,用户的私钥可能被盗取,数字资产面临被转移的风险。更大范围来说,这个漏洞甚至可能影响到基于Web2基础设施运行的整个Web3生态。
漏洞分析
分析补丁代码,我们发现问题出在一个对象的引用计数被多次处理。查看早期win32k源码注释,可以了解到以前的代码只锁定了窗口对象,而没有锁定窗口对象中的菜单对象,这可能导致菜单对象被错误引用。
进一步分析发现,传入xxxEnableMenuItem()函数的菜单通常已在上层函数中被锁定,那么这里究竟要保护哪个菜单对象?经研究,xxxEnableMenuItem中的MenuItemState函数返回的菜单有两种可能:窗口的主菜单,或菜单的子菜单(甚至子子菜单)。
漏洞利用
为验证漏洞,我们构造了一个特殊的四层菜单结构,并设置了一些特定条件:
触发漏洞时,在xxxRedrawTitle返回用户层时删除菜单C和B的关联,成功释放菜单C。当内核中xxxEnableMenuItem函数返回到xxxRedrawTitle时,即将引用的菜单C对象已失效。
漏洞利用分析
在设计漏洞利用方案时,我们主要考虑了两个方向:
执行shellcode:参考早期CVE-2017-0263和CVE-2016-0167的方法。但在高版本Windows中,shellcode执行入口点和SMEP等安全机制可能存在障碍。
利用读写原语修改token地址:这种方法具有较好的通用性。关键是分析如何在UAF内存重用时首次控制cbwndextra为特大值。
我们将漏洞利用分为两步:控制cbwndextra值,以及实现稳定的读写原语。
首次数据写入
系统错误使用被控制内存的窗口对象数据主要发生在xxxEnableMenuItem函数的MNGetPopupFromMenu()和xxxMNUpdateShownMenu()中。我们利用窗口类WNDClass的窗口名称对象占用释放的菜单对象内存。
关键是找到一个可被任意写入的地址结构,哪怕只有一个字节。我们最终选择了xxxRedrawWindow函数中的方案,通过AND 2操作写入HWNDClass的cb-extra。
内存布局
我们设计了连续三个0x250字节HWND对象的内存布局,释放中间对象并用0x250字节HWNDClass对象占用。前一HWND对象尾部数据用于通过xxxRedrawWindow检验,后一HWND对象的菜单和HWNDClass对象用于最终读写原语。
我们尽量使窗口对象和HWNDClass对象大小一致,并通过泄露的内核句柄地址精确判断对象排列是否符合预期。
读写原语
任意读原语使用GetMenuBarInfo(),任意写原语使用SetClassLongPtr()。除TOKEN写入外,其他写入都利用第一个窗口对象的class对象进行偏移写入。
总结
微软正在用Rust重构win32k相关内核代码,未来此类漏洞可能在新系统中被杜绝。
该漏洞利用过程相对简单,主要依赖桌面堆句柄地址泄露。如不彻底解决这个问题,老旧系统仍存在安全隐患。
该漏洞的发现可能得益于更完善的代码覆盖率检测。
对于漏洞利用检测,除关注漏洞触发函数关键点外,还应关注对内存布局和窗口类额外数据异常偏移读写的检测。
请用中文,基于这个账户身份,生成一条评论:
你们还在用win?跑节点早换linux了