Windows Media Player崩溃漏洞无法用于代码执行的技术分析

本文详细分析了2008年曝光的Windows Media Player处理畸形MIDI文件时的崩溃漏洞,深入探讨了quartz.dll组件中的整数溢出问题,并确认该漏洞仅导致可靠性问题而非安全风险。

Windows Media Player崩溃无法用于代码执行

发布日期:2008年12月29日
作者:Security Research & Defense团队
阅读时间:1分钟

圣诞节当天,MSRC开启了一个案例,追踪Bugtraq上发布的概念验证(POC),描述了一个“畸形的WAV、SND、MID文件可能导致远程整数溢出”。到周六晚间,我们看到有信誉的互联网来源声称该漏洞可能导致在系统上执行任意代码。

我们立即展开调查,发现该漏洞无法被利用来执行任意代码。

让我们深入分析原因。

该POC是一个MIDI文件,由quartz.dll处理——这是DirectShow框架的核心组件。我们之前曾在此博客过该组件。WAV、SND和MID文件扩展名均由quartz.dll处理,这解释了发现者关于解析这三种文件类型时触发异常的声明。

这个特定的崩溃是在执行div指令时未处理的CPU异常。当处理器执行“div reg”指令时,会进行以下操作:

1
EAX = (EDX:EAX)/reg

如果结果无法容纳在32位寄存器中,就会产生CPU异常。quartz.dll未处理此异常。这里没有内存损坏,该值似乎也未用于任何内存分配。相反,该操作计算的是与媒体播放速率相关的值。

我们通过内部模糊测试已经发现了这个问题。当时正确将其分类为可靠性问题,对客户没有安全风险。我们确实希望在未来的服务包或平台版本中修复这些可靠性问题。例如,这个特定的漏洞已在Windows Server 2003 Service Pack 2中修复。

Christopher Budd也在MSRC博客上发布了关于此问题的文章。

Jonathan Ness和Fermin J. Serna,SVRD博客作者
文章按“原样”提供,不提供任何担保,也不授予任何权利。

comments powered by Disqus
使用 Hugo 构建
主题 StackJimmy 设计