CVE:CVE-2003-0346
CNNVD:CNNVD-200308-167
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给有此漏洞的用户。
solution:Upgrade microsoft directx to a higher version than 5.2,6.1,7.0,7.0a,8.1,9.0a,and avoid the version 5.2,6.1,7.0,7.0a,8.1,9.0a