BUGTRAQ ID: 26902
CVE ID:CVE-2007-6341
Perl Net::DNS是一款使用Perl实现的DNS解析应用程序。
Perl Net::DNS不正确处理畸形应答请求,远程攻击者可以利用漏洞对应用程序进行拒绝服务攻击。
问题存在于Net/DNS/RR/A.pm:
if ($self->{"rdlength"} > 0) {
$self->{"address"} = inet_ntoa(substr($$data, $offset, 4));
}
由于在使用substr时不正确验证$$data有4字节可读,可导致数据发送给inet_ntoa不足够而导致触发如下代码:
ip_address = SvPVbyte(ip_address_sv, addrlen);
if (addrlen == sizeof(addr) || addrlen == 4)
addr.s_addr =
(ip_address[0] & 0xFF) << 24 |
(ip_address[1] & 0xFF) << 16 |
(ip_address[2] & 0xFF) << 8 |
(ip_address[3] & 0xFF);
else
croak("Bad arg length for %s, length is %d, should be %d", "Socket::inet_ntoa", addrlen, sizeof(addr));
构建恶意的DNS应答可触发此漏洞,并导致PERL崩溃。
Net::DNS Net::DNS 0.60
目前没有解决方案提供:
<a href=http://www.net-dns.org/ target=_blank>http://www.net-dns.org/</a>
暂无评论