上周, 微软官方承认Windows Media Player中存在一个隐患, 它由安全研究机构eEye Digital Security于两周前发现. 所幸的是, 目前还没有利用代码出现.
eEye在11月22号发表的一份报告指出, WMP的一个处理基于XML的ASX播放列表的功能可能会被欺骗来分配过多内存来处理播放列表中包含媒体文件的URL, 这个问题存在于所有支持这一功能的WMP当中, 根据研究显示, 受影响的最低WMP版本是Windows 95系统中版本为6.4的WMP. eEye指出, 虽然欺骗分配的内存不多, 最多也只有三到四个字节, 但实际上它还是一个溢出问题, 能够为利用代码提供了可以执行的条件.
自从WMP 6.4推出以来, Media Player中关于ASX的堆溢出问题就已经已经出现.
微软的安全公告表示, 实际包含了媒体文件URL的XML元素是REF. 它通过一个HREF属性来设置URL, 就像是HTML中的A标签. URL的第一部分是协议名, 如http://. 如果协议名漏写或者不能被识别, 那么Media Player就会认为要播放的媒体文件是一个流的URL, 并且会自动添加mms://头.
庆幸的是, WMP会检测确保提供的协议不会少于三个字符, 所以以下的REF元素会被过滤掉: REF HREF=" bn://try_this_one.avi" .
那问题究竟出现在什么地方呢? eEye的一位工程师发现, 检测提供的URL并用字符代替字符代码的解析器是在协议过滤器后才运行的. 所以, 如果提供的URL是: REF HREF=" b%6e:// try_this_one.avi" 看上去有四个字符, 所以它能够逃过协议过滤器的检查, 跟着%6e将会被字符n代替, 那么提供的URL就会违法. WMP会在堆中为这个URL分配比实际需要要多的两个额外的字节, 这就会引起溢出.
微软安全响应中心表示, 他们正在调查其它引起溢出方式的可能性. 目前还没有利用代码, 但eEye相信利用是有可能的. 同时, Secunia把这个溢出问题列为 "高危" 等级.