安全研究

安全漏洞
Anzio Web Print Object ActiveX组件mainurl参数栈溢出漏洞

发布日期:2008-08-20
更新日期:2008-08-22

受影响系统:
Anzio Web Print Object 3.2.24
Anzio Web Print Object 3.2.19
Anzio Print Wizard Server Edition 3.2.19
Anzio Print Wizard Personal Edition 3.2.19
不受影响系统:
Anzio Web Print Object 3.2.30
描述:
BUGTRAQ  ID: 30545
CVE(CAN) ID: CVE-2008-3480

Anzio Web Print Object(WePO)是一个Windows ActiveX web页面组件,用于从网页启动打印任务。

WePO ActiveX组件的mainurl参数用于指定所要打印内容的本地文件名或URL:

/-----------

<param name="mainurl" value="http://www.somewhere.com/myreport.pcl">

- -----------/

WePO取OLECHAR格式的mainurl参数值并使用oleaut32.dll的API SysAllocStringLen将其转换为BSTR字符串。SysAllocStringLen返回的BSTR字符串指针存储到了栈中。

/-----------

024F64B8   . 51             PUSH ECX
~      ;   length of "mainurl" value
024F64B9   . 52             PUSH EDX
~        ;   pointer to "mainurl" value
024F64BA   . E8 4DB0FFFF    CALL JMP.oleaut32.SysAllocStringLen
024F64BF   . 5A             POP EDX
024F64C0   . 85C0           TEST EAX,EAX
024F64C2   .^0F84 94F9FFFF  JE PWBUTT~1.024F5E5C
024F64C8   . 8902           MOV DWORD PTR DS:[EDX],EAX
~        ;  ;Save BSTR pointer to stack
024F64CA   > C3             RETN

- -----------/

之后没有验证长度便将ASCII格式的mainurl值拷贝到了栈上的缓冲区。

/-----------

024F300C  /$ 56             PUSH ESI
024F300D  |. 57             PUSH EDI
024F300E  |. 89C6           MOV ESI,EAX
~        ; ESI = pointer to "mainurl" value
024F3010  |. 89D7           MOV EDI,EDX
~        ; EDI = pointer to destination buffer in the stack
024F3012  |. 89C8           MOV EAX,ECX
~        ; ECX = length of "mainurl" value
024F3014  |. 39F7           CMP EDI,ESI
024F3016  |. 77 13          JA SHORT PWBUTT~1.024F302B
024F3018  |. 74 2F          JE SHORT PWBUTT~1.024F3049
024F301A  |. C1F9 02        SAR ECX,2
024F301D  |. 78 2A          JS SHORT PWBUTT~1.024F3049
024F301F  |. F3:A5          REP MOVS DWORD PTR ES:[EDI],DWORD PTR
DS:[ESI]      ; Copy "mainurl" value to stack buffer,
024F3021  |. 89C1           MOV ECX,EAX
~        ; without validating its length
024F3023  |. 83E1 03        AND ECX,3
024F3026  |. F3:A4          REP MOVS BYTE PTR ES:[EDI],BYTE PTR DS:[ESI]
024F3028  |. 5F             POP EDI
024F3029  |. 5E             POP ESI
024F302A  |. C3             RETN        

- -----------/

如果攻击者对网页提供了超长的mainurl值,就可以覆盖栈缓冲区和SEH,导致在安装了WePO ActiveX控件的机器上执行任意代码。

<*来源:Francisco Falcon
  
  链接:http://secunia.com/advisories/31554/
        http://marc.info/?l=bugtraq&m=121933135810729&w=2
        http://www.anzio.com/news/newpw.htm#Release
*>

测试方法:

警 告

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

http://www.milw0rm.com/exploits/6278

建议:
厂商补丁:

Anzio
-----
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:

http://www.anzio.com/controls30/PWButtonXControl1.ocx

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