Microsoft Windows GDI CreateDIBPatternBrushPt函数堆溢出漏洞(MS08-021)

受影响系统:
    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: 28571
    CVE(CAN) ID: CVE-2008-1083
    Microsoft Windows是微软发布的非常流行的操作系统。
    Windows的GDI函数CreateDIBPatternBrushPt用于处理WMF文件。由于错误地计算了用户数据,可能没有充分地分配堆块并在之后使用了该块,导致堆溢出。此外在解析EMF文件中用于描述文件中所包含位图的头结构时,直接在计算所要分配字节数的算术操作中使用了这个头中的一些值,这个计算可能溢出,最终导致堆溢出。如果用户受骗打开了特制的图形文件的话,就可能触发这些溢出,导致执行任意指令。
    <*来源:Sebastian Apelt (webmaster@buzzworld.org)
    链接:http://secunia.com/advisories/29704/
     http://marc.info/?l=bugtraq&m=120768479804050&w=2
     http://www.microsoft.com/technet/security/Bulletin/MS08-021.mspx
     http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=682
     http://labs.idefense.com/intelligence/vulnerabilities/display.php?id=681
     http://www.us-cert.gov/cas/techalerts/TA08-099A.html
    *>
    建议:
    --------------------------------------------------------------------------------
    临时解决方法:
    * 通过修改注册表禁用元文件处理
    
     1. 单击“开始”,单击“运行”,在“打开”框中键入Regedit,然后单击“确定”。
     2. 找到并随后单击下列注册表子项:
     HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\GRE_Initialize
     3. 在“编辑”菜单上,指向“新建”,然后单击“DWORD”。
     4. 键入DisableMetaFiles,然后按 Enter。
     5. 在“编辑”菜单上,单击“修改”以修改DisableMetaFiles注册表项。
     6. 在“数值数据”框中键入1,然后单击“确定”。
     7. 退出注册表编辑器。
     8. 重新启动计算机。
    厂商补丁:
    Microsoft
    ---------
    Microsoft已经为此发布了一个安全公告(MS08-021)以及相应补丁:
    MS08-021:Vulnerabilities in GDI Could Allow Remote Code Execution (948590)
    链接:http://www.microsoft.com/technet/security/Bulletin/MS08-021.mspx