BUGTRAQ ID: 29290
mtr是结合了traceroute和ping程序的网络诊断工具。
mtr的split.c文件的split_redraw()函数在处理特制的主机名时存在栈溢出漏洞,远程攻击者可能利用此漏洞控制用户系统。
以下是有漏洞部分的代码段:
"split.c"
#define MAX_LINE_SIZE 256
void split_redraw(void)
{
int max;
int at;
ip_t *addr;
char *name;
char newLine[MAX_LINE_SIZE];
int i;
...
for(at = 0; at < max; at++) {
addr = net_addr(at);
if( addrcmp( (void *) addr, (void *) &unspec_addr, af ) != 0 ) {
name = dns_lookup(addr); [1]
if(name != NULL) {
/* May be we should test name's length */ [!!]
sprintf(newLine, "%s %d %d %d %d %d %d", name, [2]
net_loss(at),
net_returned(at), net_xmit(at),
net_best(at) /1000, net_avg(at)/1000,
net_worst(at)/1000);
} else {
...
sprintf(newLine, "???");
}
...
...
}
}
在[2]处没有安全的调用sprintf()函数,name参数为IP地址的RevDNS。如果用户受骗访问了恶意的DNS服务器,则在使用-p或--split命令行选项时就会触发这个溢出,导致执行任意指令。
MTR 0.72
MTR
---
目前厂商已经发布了升级补丁以修复这个安全问题,请到厂商的主页下载:
<a href=http://www.bitwizard.nl/mtr target=_blank>http://www.bitwizard.nl/mtr</a>
暂无评论