MIDI PoC不可用于代码执行
周三,milw0rm上发布了一个概念验证(PoC),描述了Windows Media Player中的一个“整数溢出”漏洞。我们调查了该.mid文件,发现它是四个月前圣诞节期间在Bugtraq上公开的一个不可利用崩溃的重复版本。我们之前在此博客中讨论过相同的问题:http://blogs.technet.com/srd/archive/2008/12/29/windows-media-player-crash-not-exploitable-for-code-execution.aspx
以下是崩溃的堆栈跟踪以及它不可利用的原因:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
ChildEBP RetAddr
0c7af6a0 7490222a quartz!MulDivRN+0x1a
0c7af6bc 74901c93 quartz!smfTicksToMillisecs+0x66
0c7af758 7491f7f2 quartz!CMIDIParse::ParseNewFile+0x126
0c7af770 74837a7f quartz!CSimpleReader::NotifyInputConnected+0x2e
0c7af784 748340b2 quartz!CBaseMSRInPin::CompleteConnect+0x3a
0c7af79c 7483df8d quartz!CBasePin::ReceiveConnection+0xc2
0c7af7bc 7483e7d7 quartz!CBasePin::AttemptConnection+0x54
0c7af7e0 7483e36f quartz!CBasePin::TryMediaTypes+0x64
0c7af80c 7483e2f9 quartz!CBasePin::AgreeMediaType+0x73
0c7af824 7483e048 quartz!CBasePin::Connect+0x55
0c7af850 7483e56b quartz!CFilterGraph::ConnectDirectInternal+0x40
0c7af8b0 7483ea76 quartz!CFilterGraph::RenderByFindingPin+0xad
0c7afb1c 74834cc0 quartz!CFilterGraph::RenderUsingFilter+0x201
0c7afb94 74834fe9 quartz!CFilterGraph::RenderViaIntermediate+0x2d8
0c7afbb0 74834f48 quartz!CFilterGraph::RenderRecursively+0x37
0c7afc80 129ec60b quartz!CFilterGraph::RenderFile+0x143
(da8.c0c): Integer overflow - code c0000095 (first/second chance not available)
eax=58d072e0 ebx=0000bb80 ecx=00017700 edx=0006c80a esi=0bdbaff0 edi=00000001
eip=74902121 esp=0c7af69c ebp=0c7af6a0 iopl=0 nv up ei pl nz na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00010206
quartz!MulDivRN+0x1a:
74902121 f7f1 div eax,ecx
|
正如我们在之前的博客文章中所说,整数溢出异常是由于除法结果无法放入32位EAX寄存器中。该计算结果并未用于任何内存操作,因此这不是一个可利用的问题。
一如既往,我们鼓励负责任的漏洞披露。报告Microsoft产品中漏洞的最佳方式是发送邮件至secure@microsoft.com。感谢。
Jonathan Ness and Chengyun, MSRC Engineering
文章按“原样”提供,不提供任何担保,也不授予任何权利。