星期一, 十二月 11, 2006

连 Win95 也遭牵连, WMP 欺骗溢出隐患曝光

Windows Media Player 欺骗溢出隐患      上周, 微软官方承认 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 把这个溢出问题列为 "高危" 等级.

      除了避免同时打开多个 ASX 播放列表外, eEye 建议用户针对 ASX 使用另外的媒体播放器.

没有评论: