MS10-028:Microsoft Visio VISIODWG.DLL库缓冲区溢出漏洞

来源:岁月联盟 编辑:猪蛋儿 时间:2010-05-07

影响版本:
Microsoft Visio 2007 SP2
Microsoft Visio 2007 SP1
Microsoft Visio 2003 SP3
Microsoft Visio 2003 SP2

漏洞描述:
BUGTRAQ  ID: 39836
CVE ID: CVE-2010-1681

Visio是微软Office套件中的图形编辑工具。

Visio中所使用的VISIODWG.DLL库中存在缓冲区溢出漏洞,起因是在该库的74ef偏移处执行了不安全的strcpy调用。在将DXF文件注入到Visio文档中时(通过拖放操作或从菜单栏中选择“注入 -> CAD绘图”)会加载有漏洞的函数库。成功利用这个漏洞的攻击者可以以运行Visio用户的权限执行任意代码。

微软在MS10-028公告所提供的补丁中通过使用81e7偏移处的strncpy调用替换有漏洞的调用来修复这个漏洞,但公告中并没有提及这个漏洞。

/-----
安装补丁前:

.text:667D74E2 loc_667D74E2:
.text:667D74E2 mov     ecx, [edi+2428h]
.text:667D74E8 mov     edx, [esp+6Ch+Key]
.text:667D74EC inc     ecx
.text:667D74ED push    ecx                  ; Source
.text:667D74EE push    edx                  ; Dest
.text:667D74EF call    strcpy
.text:667D74F4 mov     esi, ds:bsearch
.text:667D74FA push    offset sub_667D7400  ; PtFuncCompare
.text:667D74FF push    0Ch                  ; ElementSize
.text:667D7501 push    0D5h                 ; NumOfElements
.text:667D7506 lea     eax, [esp+80h+Key]
.text:667D750A push    offset off_6685E730  ; Base
.text:667D750F push    eax                  ; Key
.text:667D7510 call    esi                  ; bsearch
.text:667D7512 mov     edi, eax
.text:667D7514 add     esp, 1Ch
.text:667D7517 test    edi, edi
.text:667D7519 jz      loc_667D770F

安装补丁后:

.text:667D81D2 loc_667D81D2:
.text:667D81D2 mov     ecx, [edi+2430h]
.text:667D81D8 mov     edx, [esp+6Ch+Key]
.text:667D81DC mov     ebx, ds:strncpy
.text:667D81E2 inc     ecx
.text:667D81E3 push    50h                  ; Count <-- MAX LENGTH
.text:667D81E5 push    ecx                  ; Source
.text:667D81E6 push    edx                  ; Dest
.text:667D81E7 call    ebx ; strncpy
.text:667D81E9 mov     esi, ds:bsearch
.text:667D81EF push    offset sub_667D80F0  ; PtFuncCompare
.text:667D81F4 push    0Ch                  ; ElementSize
.text:667D81F6 push    0D5h                 ; NumOfElements
.text:667D81FB lea     eax, [esp+84h+Key]
.text:667D81FF push    offset off_6685F730  ; Base
.text:667D8204 push    eax                  ; Key
.text:667D8205 mov     [esp+8Ch+var_1], 0
.text:667D820D call    esi                  ; bsearch
.text:667D820F mov     edi, eax
.text:667D8211 add     esp, 20h
.text:667D8214 test    edi, edi
.text:667D8216 jz      loc_667D840C

- -----/

<*参考

http://marc.info/?l=full-disclosure&m=127299981022788&w=2
http://www.microsoft.com/technet/security/bulletin/MS10-028.mspx?pf=true

*>

安全建议:
厂商补丁:

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