漏洞概要 关注数(24) 关注此漏洞
缺陷编号:wooyun-2013-047347
漏洞标题:暴风影音拒绝服务
相关厂商:暴风影音
漏洞作者: puzzor
提交时间:2013-12-30 10:56
修复时间:2014-03-27 10:57
公开时间:2014-03-27 10:57
漏洞类型:拒绝服务
危害等级:中
自评Rank:6
漏洞状态:漏洞已经通知厂商但是厂商忽略漏洞
漏洞来源: http://www.wooyun.org,如有疑问或需要帮助请联系 [email protected]
Tags标签: 无
漏洞详情
披露状态:
2013-12-30: 细节已通知厂商并且等待厂商处理中
2014-01-04: 厂商主动忽略漏洞,细节向第三方安全合作伙伴开放
2014-02-28: 细节向核心白帽子及相关领域专家公开
2014-03-10: 细节向普通白帽子公开
2014-03-20: 细节向实习白帽子公开
2014-03-27: 细节向公众公开
简要描述:
好久之前遇到的了,没有什么意义,就是个拒绝服务,供厂商参考
详细说明:
mp4是由一个个“box”组成的,大box中存放小box,一级嵌套一级来存放媒体信息。
这里更改的部分是stsz box,它存放了mp4文件中的各个sample的大小
Mp4文件格式参考:http://www.cnblogs.com/haibindev/archive/2011/10/17/2214518.html
对于样本来说,关键结构如下:
更改完成后打开,程序崩溃。
===========================================================
VERIFIER STOP 00000004: pid 0xD70: extreme size request
01E40000 : Heap handle
EFFFFFFF : Size requested
00000000 :
00000000 :
===========================================================
(d70.e38): Break instruction exception - code 80000003 (first chance)
eax=00000000 ebx=efffffff ecx=7c93eb05 edx=190bf504 esi=00000004 edi=01e40000
eip=7c921230 esp=190bf738 ebp=190bf74c iopl=0 nv up ei pl zr na pe nc
cs=001b ss=0023 ds=0023 es=0023 fs=003b gs=0000 efl=00000246
ntdll!DbgBreakPoint:
7c921230 cc int 3
0:028> kbn
# ChildEBP RetAddr Args to Child
00 190bf734 7c9751ad efffffff 01e40000 01e40000 ntdll!DbgBreakPoint
01 190bf74c 7c98a48c 00000004 7c98a764 01e40000 ntdll!RtlApplicationVerifierStop+0x160
02 190bf7c8 7c98d628 01e40000 01001002 efffffff ntdll!RtlpDebugPageHeapAllocate+0x43
03 190bf84c 7c969d18 01e40000 01001002 efffffff ntdll!RtlDebugAllocateHeap+0x2d
04 190bfa7c 7c93b298 01e40000 01001002 efffffff ntdll!RtlAllocateHeapSlowly+0x44
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\WINDOWS\System32\verifier.dll -
05 190bfcb0 5ad5230b 01e40000 01001002 efffffff ntdll!RtlAllocateHeap+0xe64
*** ERROR: Module load completed but symbols could not be loaded for C:\PROGRA~1\Baofeng\STORMP~1\Core\Codecs\mfc100u.dll
WARNING: Stack unwind information not available. Following frames may be wrong.
06 190bfce4 786ab327 efffffff efffffff 190bfdc0 verifier+0x230b
*** ERROR: Symbol file could not be found. Defaulted to export symbols for C:\PROGRA~1\Baofeng\STORMP~1\Core\Codecs\MP4Splitter.ax -
07 190bfcfc 0c77da1c efffffff efffffff 190bfdc0 mfc100u+0xbb327
08 00000000 00000000 00000000 00000000 00000000 MP4Splitter!DllRegisterServer+0x8aec
0:028> u MP4Splitter!DllRegisterServer+0x8aec L-10
MP4Splitter!DllRegisterServer+0x8adc:
0c77da0c 085e83 or byte ptr [esi-7Dh],bl
0c77da0f c8ff5bc2 enter 5BFFh,0C2h
0c77da13 0400 add al,0
0c77da15 57 push edi;
0c77da16 53 push ebx ;size参数
0c77da17 e8a6980100 call MP4Splitter!DllGetClassObject+0x9a62 (0c7972c2)
ebx为new操作所需的size。在sub_68ADA00中只对ebx进行了下限(是否大于0)检查,而没有进行上限检查导致后面ebx传递到new时发生异常。
默认new不会返回0,而是会抛出异常std::bad_alloc。所以在上面那段程序中,如果size过大,比如7fffffff,则会造成系统抛出异常,而程序没能捕获,造成拒绝服务。
如果适当增加size大小而不超过系统所允许的数值,则在播放过程中会增加内存消耗。
而且在free的过程中可能还是会出现问题的,没有再深入分析了。
漏洞证明:
没法上传附件,厂商可以自己构造一下验证。我在新版本中还是能够成功的。
修复方案:
程序没有对new失败抛出的exception进行catch。
版权声明:转载请注明来源 puzzor@乌云
漏洞回应
厂商回应:
危害等级:无影响厂商忽略
忽略时间:2014-03-27 10:57
厂商回复:
最新状态:
暂无