安全研究

安全漏洞
Microsoft Windows多个内核权限提升漏洞(MS08-061)

发布日期:2008-10-14
更新日期:2008-10-16

受影响系统:
Microsoft Windows XP SP3
Microsoft Windows XP SP2
Microsoft Windows Vista SP1
Microsoft Windows Vista
Microsoft Windows Server 2008
Microsoft Windows Server 2003 SP2
Microsoft Windows Server 2003 SP1
Microsoft Windows 2000SP4
描述:
BUGTRAQ  ID: 31651,31652,31653
CVE(CAN) ID: CVE-2008-2250,CVE-2008-2252,CVE-2008-2251

Microsoft Windows是微软发布的非常流行的操作系统。

Windows内核未正确验证新窗口创建过程中所传递的窗口属性,未正确验证某些用户态输出,或可能处于双重释放的状态。成功利用此漏洞的攻击者可以运行任意内核态代码。攻击者可随后安装程序;查看、更改或删除数据;或者创建拥有完全用户权限的新帐户。

以下是双重释放漏洞的代码段:

// Attacker controls lParam
void win32k_entry_point(...) {
   […]
      // lParam has already passed successfully the ProbeForRead

      my_struct = (PMY_STRUCT)lParam;
      if (my_struct ->lpData) {
           cbCapture = sizeof(MY_STRUCT) + my_struct->cbData;  // [1] first fetch
    […]
                 // my_struct ->lpData has already passed successfully the ProbeForRead
    […]
            if ( my_allocation = UserAllocPoolWithQuota(cbCapture, TAG_SMS_CAPTURE)) != NULL) {  
                 RtlCopyMemory(my_allocation, my_struct->lpData, my_struct->cbData);   // [2] second fetch
            }
      }
   […]
}

在上面的代码中,两次取了相同的用户态数据([1]和[2])。由于内核无法保证这两次取值都拥有相同的值,在[1]可能出现较小的内存分配而之后在[2]内核拷贝了较长的数据,导致内存池溢出。

<*来源:Paul Caton
        Thomas Garnier
  
  链接:http://secunia.com/advisories/32247/
        http://blogs.technet.com/swi/archive/2008/10/14/ms08-061-the-case-of-the-kernel-mode-double-fetch.aspx
        http://www.microsoft.com/technet/security/Bulletin/MS08-061.mspx?pf=true
        http://www.us-cert.gov/cas/techalerts/TA08-288A.html
*>

建议:
厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS08-061)以及相应补丁:
MS08-061:Vulnerabilities in Windows Kernel Could Allow Elevation of Privilege (954211)
链接:http://www.microsoft.com/technet/security/Bulletin/MS08-061.mspx?pf=true

浏览次数:2935
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障