MS11-034:解决Win32k子系统中的漏洞
发布日期:2011年4月12日
作者:swiat
阅读时间:2分钟
今天我们发布了安全公告MS11-034,以解决Win32k子系统中的漏洞。此更新处理了外部报告的问题,以及在我们变体调查过程中发现的多个内部漏洞。
该公告看似解决了数量惊人的问题。然而,如果您深入研究这些问题本身,您会发现此更新中解决的30个漏洞实际上仅共享三个独立的漏洞根本原因:用户模式回调后对Win32k对象的验证或锁定不足。发现这些问题的安全研究员Tarjei Mandt对每种不同的Win32k对象类型应用了相同的技术。本文旨在概述三个漏洞子类之间的差异,并涵盖本月更新中修复的漏洞的更多细节。
漏洞类别
第一类:对象锁定缺失
第一类漏洞涉及未锁定Win32k对象。在执行用户模式回调之前未锁定的对象,因此一旦控制通过回调传递回用户,对象就可以被操纵。这意味着在返回到内核之前,对象可以被修改或释放。我们的观察表明,在某些情况下,内存重用可以被利用来提升权限。
第二类:菜单项验证缺失
第二类漏洞涉及用户模式回调返回后对菜单项缺乏验证,导致典型的释放后使用漏洞。恶意用户可以在用户模式回调期间销毁菜单,导致某些内核函数对悬空指针进行操作。
第三类:DDE对象验证缺失
第三类漏洞涉及用户模式回调后对DDE对话对象缺乏验证,可能导致空指针解引用。这允许标准用户提升权限或导致拒绝服务情况,具体取决于用户模式回调后对象的使用方式。调查表明,至少有几个报告的DDE漏洞可能实现权限提升。
漏洞可利用性说明
最后,我们希望澄清这些问题的可利用性。这些漏洞可能允许标准用户提升权限,因为可以在CPU以监督者模式运行时执行任意代码。本月更新中解决的所有漏洞都无法远程触发,因此严重性评级为“重要”。对于能够在受感染系统上运行代码的本地攻击者,此包中修复的大多数漏洞都易于利用。
致谢
感谢英国科学团队的Thomas Garnier,以及Jonathan Ness、Matt Miller和Tarjei Mandt。
- Richard van Eeden和Brian Cavenah,MSRC工程团队