安全研究
安全漏洞
Gadu-Gadu emots.txt处理器多个远程栈溢出漏洞
发布日期:2007-11-22
更新日期:2007-11-26
受影响系统:
Gadu-Gadu Gadu-Gadu 7.7描述:
BUGTRAQ ID: 26545
Gadu-Gadu是在波兰广泛使用的免费聊天客户端。
Gadu-Gadu的实现上存在缓冲区溢出漏洞,本地攻击者可能利用此漏洞控制操作系统。
Gadu-Gadu客户端负责将emots.txt文件数据拷贝到本地缓冲区的代码中存在缓冲器溢出漏洞,有漏洞的函数位于0x00443CE2:
.text:00443CE2 HandleEmotsConfig proc near ; CODE XREF: sub_4A55F6:loc_4A5C90p
.text:00443CE2 mov eax, offset loc_561ECC
.text:00443CE7 call __EH_prolog
.text:00443CEC mov eax, 26588
.text:00443CF1 call __alloca_probe
.text:00443CF6 push ebx
.text:00443CF7 lea eax, [ebp-24h]
.text:00443CFA push esi
.text:00443CFB push eax
.text:00443CFC call sub_443A9E
.text:00443D01 xor esi, esi
(...)
该函数负责打开\emots\_NUMBER_\emots.txt文件然后读取有关图释及其对应图形的信息,以下是配置文件示例:
("emoticon","emoticon",...),"graphic_file.gif","graphic_file.gif"
在将当前打开文件的数据(配置行的第二、第三部分)拷贝到某些本地缓冲区期间,程序没有检查字符串的长度,这可能导致覆盖栈上500字节的缓冲区。
以下是拷贝第一个gfx文件的名称的有漏洞代码:
.text:00443E37 loc_443E37: ; CODE XREF: HandleEmotsConfig+164j
.text:00443E37 cmp al, '"'
.text:00443E39 jz short loc_443E48
.text:00443E3B mov [ecx], al
.text:00443E3D inc ecx
.text:00443E3E inc edi
.text:00443E3F mov [ebp-18h], edi
.text:00443E42
.text:00443E42 loc_443E42: ; CODE XREF: HandleEmotsConfig+153j
.text:00443E42 mov al, [edi]
.text:00443E44 cmp al, 20h
.text:00443E46 jnb short loc_443E37
可见对移动的数据没有大小限制。实际上第二段代码也存在同样的情况:
.text:00443E87 loc_443E87: ; CODE XREF: HandleEmotsConfig+1B6j
.text:00443E87 cmp cl, '"'
.text:00443E8A jz short loc_443E9F
.text:00443E8C mov [eax], cl
.text:00443E8E inc eax
.text:00443E8F inc edi
.text:00443E90
.text:00443E90 loc_443E90: ; CODE XREF: HandleEmotsConfig+1A3j
.text:00443E90 mov cl, [edi]
.text:00443E92 cmp cl, ' '
.text:00443E95 mov [ebp-18h], edi
.text:00443E98 jnb short loc_443E87
在使用上面的代码拷贝数据时可能会覆盖一些本地变量的值和返回地址等。修改合适的栈数据数量就会导致异常。当emots.txt中的文件名大于栈大小时,或图释解析代码调用了0x0052F5D0地址上函数时,就会出现异常:
.text:00443EEE call unknown_libname_52 ; Microsoft VisualC 2-8/net runtime
具体来说,0x0052F62A上的指令会导致异常,因为EDI寄存器值为0:
.text:0052F62A rep movsd
覆盖的指针包括SEH结构,而该结构上包含有系统在出现异常时会调用的函数地址。由于可以轻易的导致异常, 因此可以完全控制地址,导致gg.exe执行任意指令。
<*来源:j00ru (j00ru.vx@gmail.com)
链接:http://marc.info/?l=bugtraq&m=119576631502638&w=2
*>
建议:
厂商补丁:
Gadu-Gadu
---------
目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://www.gadu-gadu.pl/
浏览次数:2636
严重程度:0(网友投票)
绿盟科技给您安全的保障
