安全研究

安全漏洞
Windows MIDI解析器quartz.dll远程堆破坏漏洞(MS03-030)

发布日期:2003-07-23
更新日期:2003-07-25

受影响系统:
Microsoft Windows XP
Microsoft Windows ME
Microsoft Windows 98se
Microsoft Windows 98
Microsoft Windows 2003
Microsoft Windows 2000
描述:
CVE(CAN) ID: CVE-2003-0346

DirectX包含一套低级别API可由Windows程序调用来支持多媒体,其中quartz.dll允许Windows应用程序通过普通接口播放MIDI音乐。Windows Media Player和IE使用此dll来播放MIDI文件。

quartz.dll在处理畸形MIDI文件时存在问题,远程攻击者可以利用这个漏洞构建恶意WEB页面,诱使用户访问,以用户进程权限在系统上执行任意指令。

quartz.dll存在整数溢出而导致的堆破坏漏洞,如果MIDI文件中的Text或Copyright字符串的长度为FFFFFFFFh,quartz尝试分配0字节大小的堆快,然后拷贝text字符串或任何下面的数据到新分配的堆中,结果导致0字节块相邻的对内存结构被破坏。

主要问题是quartz增加指定字符串的长度没有进行任何缓冲区边界检查,增加的值(now 0)传递给LocalAlloc(),然后memcpy()函数将会使用原始值(FFFFFFFFh)从文件映象中拷贝字符串到堆缓冲区中。

还有一个堆破坏发生在16位整数溢出中,问题存在于MThd chunk的轨道数中,这个数值是一个16位整数,用于部分算法中可以判断轨道数据结构数组所需的大小,如块的大小按照如下方法计算:

    (number_of_tracks * 24h) + 9E0h
    
如果设置轨道数为1751(6D7h)或更大会导致分配一个不充分的较小的堆块,导致在拷贝数据的时候发生溢出。Windows 2003不受此漏洞影响。

攻击者可以利用构建恶意WEB页面,或发送使用HTML形式的EMAIL给有此漏洞的用户。

<*来源:Derek Soeder (dsoeder@eeye.com
  
  链接:http://marc.theaimsgroup.com/?l=bugtraq&m=105899759824008&w=2
        http://www.microsoft.com/technet/security/bulletin/MS03-030.asp
*>

建议:
厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS03-030)以及相应补丁:
MS03-030:Unchecked Buffer in DirectX Could Enable System Compromise (Q819696)
链接:http://www.microsoft.com/technet/security/bulletin/MS03-030.asp

补丁下载:

Windows 98, Windows 98 SE和Windows Millennium Edition系统下的Microsoft DirectX 5.2, DirectX 6.1和DirectX 7.0a:

http://microsoft.com/downloads/details.aspx?FamilyId=141D5F9E-07C1-462A-BAEF-5EAB5C851CF5&displaylang=en

Windows 2000 下的Microsoft DirectX 7.0 :

http://microsoft.com/downloads/details.aspx?FamilyId=7D0E4787-A993-4C49-A5A7-9A6DE8EFDB9E&displaylang=en

Windows XP 32-bit Edition下的Microsoft DirectX 8.1:

http://microsoft.com/downloads/details.aspx?FamilyId=5ABA6A3B-F67B-4B18-B4B5-62E69A0104CE&displaylang=en

Windows XP 64-bit Edition 下的Microsoft DirectX 8.1:

http://microsoft.com/downloads/details.aspx?FamilyId=8F23F7AF-5317-4502-8B17-7C1A2139EBDC&displaylang=en

Windows Server 2003 32-bit Edition 下的Microsoft DirectX 8.1:

http://microsoft.com/downloads/details.aspx?FamilyId=A5156FF8-1812-4DB4-9175-BF9CA370279D&displaylang=en

Windows Server 2003 64-bit Edition 下的Microsoft DirectX 8.1:

http://microsoft.com/downloads/details.aspx?FamilyId=59732FCF-993A-45E8-8BA4-064575055D86&displaylang=en

所有Windows版本下的Microsoft DirectX 9.0a:

http://microsoft.com/downloads/details.aspx?FamilyId=22F990CB-E9F9-4670-8B4F-AC4F6F66C3A2&displaylang=en

Microsoft Windows NT 4.0:

http://microsoft.com/downloads/details.aspx?FamilyId=E238B8A1-4146-400A-A6F6-68E0D3B44163&displaylang=en

Microsoft Windows NT 4.0, Terminal Server Edition:

http://microsoft.com/downloads/details.aspx?FamilyId=BC72BE54-081D-43AE-B9C9-D08496C03BA3&displaylang=en

All Windows Versions except Windows NT 4.0:

http://microsoft.com/downloads/details.aspx?FamilyId=141D5F9E-07C1-462A-BAEF-5EAB5C851CF5&displaylang=en

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