安全研究

安全漏洞
Microsoft Movie Maker和Producer IsValidWMToolsStream()函数堆溢出漏洞(MS10-016)

发布日期:2010-03-09
更新日期:2010-03-10

受影响系统:
Microsoft Movie Maker 6.0
Microsoft Movie Maker 2.6
Microsoft Movie Maker 2.1
Microsoft Producer 2003
描述:
BUGTRAQ  ID: 38515
CVE(CAN) ID: CVE-2010-0265

Movie Maker是Windows操作系统中所提供的一个电影编辑软件,Producer是PowerPoint中可安装的可选组件,用于创建可在浏览器中查看的多媒体演示。

Windows Movie Maker在处理畸形.MSWMM项目文件时存在堆溢出漏洞,可能导致写访问破坏并执行任意代码。

漏洞的起因是IsValidWMToolsStream()函数,该函数中两次使用了不同大小的*pbuffer,在第二次使用时从MSWMM文件读取了数据且在重用pbuffer之前没有重新分配。如果从文件读取的大小大于初始的内部值,就可以导致堆溢出。以下是有漏洞的代码段:

/-----
CDocManager::IsValidWMToolsStream(bool *)+EB   push    dword ptr
[valueFromFile];0x8888
CDocManager::IsValidWMToolsStream(bool *)+EE   call    ??2@YAPAXI@Z    ;
operator new(uint)
CDocManager::IsValidWMToolsStream(bool *)+F3   pop     ecx
CDocManager::IsValidWMToolsStream(bool *)+F4   mov     [pBuffer], eax
CDocManager::IsValidWMToolsStream(bool *)+F7   mov     [ebp-40h], eax
CDocManager::IsValidWMToolsStream(bool *)+FA   mov     byte ptr [ebp-4], 2
CDocManager::IsValidWMToolsStream(bool *)+FE   push    dword ptr
[ebp-2Ch] ; int
CDocManager::IsValidWMToolsStream(bool *)+101  mov     ecx, esi
CDocManager::IsValidWMToolsStream(bool *)+103  push    ebx             ; int
CDocManager::IsValidWMToolsStream(bool *)+104  push    edi             ;
wchar_t *
CDocManager::IsValidWMToolsStream(bool *)+105  call
?ExtractData@CDocManager@@QAEJPBGPAXJ@Z ;
CDocManager::ExtractData(ushort const *,void *,long)
CDocManager::IsValidWMToolsStream(bool *)+10A  mov     esi, eax
CDocManager::IsValidWMToolsStream(bool *)+10C  test    esi, esi
CDocManager::IsValidWMToolsStream(bool *)+10E  jge     short loc_118158A

CDocManager::IsValidWMToolsStream(bool *)+110  mov     byte ptr [ebp-4], 1
CDocManager::IsValidWMToolsStream(bool *)+114  cmp     dword ptr
[pBuffer], 0
CDocManager::IsValidWMToolsStream(bool *)+118  jz      short loc_1181578

CDocManager::IsValidWMToolsStream(bool *)+29E  push    [pBuffer]    ; void *
CDocManager::IsValidWMToolsStream(bool *)+2A1  call    ??3@YAXPAX@Z    ;
operator delete(void *)
CDocManager::IsValidWMToolsStream(bool *)+2A6  pop     ecx

- -----/

Microsoft Producer中也可以触发这个漏洞,只需将扩展名从.MSWMM更改为.MSProducer。

<*来源:Damian Frizza
  
  链接:http://secunia.com/advisories/38791/
        http://marc.info/?l=full-disclosure&m=126817049910058&w=2
        http://www.us-cert.gov/cas/techalerts/TA10-068A.html
        http://www.microsoft.com/technet/security/bulletin/ms10-016.mspx?pf=true
*>

测试方法:

警 告

以下程序(方法)可能带有攻击性,仅供安全研究与教学之用。使用者风险自负!

* 删除Movie Maker的.MSWMM文件关联。
* 删除Microsoft Producer 2003的.MSProducer、.MSProducerZ和.MSProducerBF文件关联。
* 通过限制访问禁用Microsoft Producer 2003。
* 禁止安装Microsoft Producer 2003。  
* 卸载Microsoft Producer 2003。

http://www.exploit-db.com/sploits/Movie-Maker-Remote-Code-Execution-Exploit.zip

建议:
厂商补丁:

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS10-016)以及相应补丁:
MS10-016:Vulnerability in Windows Movie Maker Could Allow Remote Code Execution (975561)
链接:http://www.microsoft.com/technet/security/bulletin/ms10-016.mspx?pf=true

浏览次数:3245
严重程度:0(网友投票)
本安全漏洞由绿盟科技翻译整理,版权所有,未经许可,不得转载
绿盟科技给您安全的保障