安全研究

安全漏洞
多家厂商DNS实现缓存中毒漏洞

发布日期:2008-07-08
更新日期:2008-07-10

受影响系统:
Cisco IOS 12.4
Cisco IOS 12.3  
Cisco IOS 12.2
Cisco IOS 12.1
Cisco IOS 12.0
ISC BIND 9.5.x
ISC BIND 9.4.x
ISC BIND 9.3.x
ISC BIND 9.2.x
ISC BIND 8.x.x
Microsoft Windows XP SP3
Microsoft Windows XP SP2
Microsoft Windows Server 2003 SP2
Microsoft Windows Server 2003 SP1
Microsoft Windows 2000SP4
Sun Solaris 9.0_x86
Sun Solaris 9.0
Sun Solaris 8.0_x86
Sun Solaris 8.0
Sun Solaris 10.0_x86
Sun Solaris 10.0
Cisco Network Registrar 7.0.x
Cisco Network Registrar 6.3.x
Cisco Network Registrar 6.1.x
Cisco Network Registrar
Cisco ACNS 5.5
描述:
BUGTRAQ  ID: 30131
CVE(CAN) ID: CVE-2008-1447

DNS协议是TCP/IP协议组的一部分,允许DNS客户端查询DNS数据库将主机名解析为IP地址。

出于与处理DNS查询相关的处理时间和带宽考虑,大多数DNS服务器都会本地存储从其他DNS服务器所接收到的响应,存储这些响应的区域被称为缓存。一旦将响应存储到了缓存,DNS服务器就可以在再次查询DNS服务器以刷新本地缓存的响应拷贝之前的一段时间(被称为存活时间)使用本地存储的响应。
  
DNS缓存中毒攻击指的是更改了DNS服务器的DNS缓存中某项,这样缓存中与主机名相关的IP地址就不再指向正确的位置。例如,如果www.example.com映射到IP地址192.168.0.1且DNS服务器的缓存中存在这个映射,则成功向这个服务器的DNS缓存投毒的攻击者就可以将www.example.com映射到10.0.0.1。在这种情况下,试图访问www.example.com的用户就可能与错误的Web服务器联络。

DNS协议实现规范中包括一个16位的事件ID字段。如果正确地实现了这个规范且通过强随机数生成器随机的选择事件ID的话,攻击者就需要平均32,768次尝试才能成功的预测到这个ID。但由于协议实现中的弱点,用于验证DNS响应的DNS事件ID和源端口号随机性不够强,可以轻易的预测,这就允许攻击者创建匹配期望值的DSN请求伪造响应,而DNS服务器会认为该响应有效,因此简化了缓存中毒攻击。

成功利用这个漏洞可能导致DNS服务器的用户联络错误的网络服务供应商,最终的影响各不相同,从简单的拒绝服务到网络钓鱼和金融诈骗。

<*来源:Dan Kaminsky
  
  链接:http://secunia.com/advisories/31012/
        http://secunia.com/advisories/31011/
        http://secunia.com/advisories/30980/
        http://secunia.com/advisories/30979/
        http://secunia.com/advisories/30973/
        http://www.kb.cert.org/vuls/id/800113
        http://www.us-cert.gov/cas/techalerts/TA08-190B.html
        http://www.microsoft.com/technet/security/bulletin/ms08-037.mspx?pf=true
        http://www.cisco.com/warp/public/707/cisco-sa-20080708-dns.shtml
        http://www.debian.org/security/2008/dsa-1605
        http://www.debian.org/security/2008/dsa-1604
        http://www.debian.org/security/2008/dsa-1603
        http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-239392-1
        https://www.redhat.com/support/errata/RHSA-2008-0533.html
        ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-08:06.bind.asc
        http://security.gentoo.org/glsa/glsa-200807-08.xml
        http://www.debian.org/security/2008/dsa-1619
        http://www.debian.org/security/2008/dsa-1623
*>

测试方法:

警 告

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

http://www.milw0rm.com/exploits/6122
http://www.milw0rm.com/exploits/6130
http://www.milw0rm.com/exploits/6197

建议:
厂商补丁:

Cisco
-----
Cisco已经为此发布了一个安全公告(cisco-sa-20080708-dns)以及相应补丁:
cisco-sa-20080708-dns:Multiple Cisco Products Vulnerable to DNS Cache Poisoning Attacks
链接:http://www.cisco.com/warp/public/707/cisco-sa-20080708-dns.shtml

Debian
------
Debian已经为此发布了一个安全公告(DSA-1619-1)以及相应补丁:
DSA-1619-1:New python-dns packages fix DNS response spoofing
链接:http://www.debian.org/security/2008/dsa-1619

补丁下载:
Source archives:

http://security.debian.org/pool/updates/main/p/python-dns/python-dns_2.3.0.orig.tar.gz
Size/MD5 checksum:    21084 82d377c6a59181072b30b0da4e9835b8
http://security.debian.org/pool/updates/main/p/python-dns/python-dns_2.3.0-5.2+etch1.diff.gz
Size/MD5 checksum:     3444 06a021e1cf9836cec4bbe72461bab137
http://security.debian.org/pool/updates/main/p/python-dns/python-dns_2.3.0-5.2+etch1.dsc
Size/MD5 checksum:      695 c2e7178128b7033952b7795b358dea0b

Architecture independent packages:

http://security.debian.org/pool/updates/main/p/python-dns/python-dns_2.3.0-5.2+etch1_all.deb
Size/MD5 checksum:    22750 b544ce3edb7d2051811ec743a49206a1

补丁安装方法:

1. 手工安装补丁包:

  首先,使用下面的命令来下载补丁软件:
  # wget url  (url是补丁下载链接地址)

  然后,使用下面的命令来安装补丁:  
  # dpkg -i file.deb (file是相应的补丁名)

2. 使用apt-get自动安装补丁包:

   首先,使用下面的命令更新内部数据库:
   # apt-get update
  
   然后,使用下面的命令安装更新软件包:
   # apt-get upgrade

FreeBSD
-------
FreeBSD已经为此发布了一个安全公告(FreeBSD-SA-08:06)以及相应补丁:
FreeBSD-SA-08:06:DNS cache poisoning
链接:ftp://ftp.freebsd.org/pub/FreeBSD/CERT/advisories/FreeBSD-SA-08:06.bind.asc

补丁下载,执行以下步骤:

1) 将有漏洞的系统升级到5-STABLE、6-STABLE或7-STABLE,或修改日期之后的RELENG_7_0、RELENG_6_3安全版本。

2) 为当前系统打补丁:

以下补丁确认可应用于FreeBSD 6.3和7.0系统。

a) 从以下位置下载相关补丁,并使用PGP工具验证附带的PGP签名。

[FreeBSD 6.3]
# fetch http://security.FreeBSD.org/patches/SA-08:06/bind63.patch
# fetch http://security.FreeBSD.org/patches/SA-08:06/bind63.patch.asc

[FreeBSD 7.0]
# fetch http://security.FreeBSD.org/patches/SA-08:06/bind7.patch
# fetch http://security.FreeBSD.org/patches/SA-08:06/bind7.patch.asc

b) 以root执行以下命令:

# cd /usr/src
# patch < /path/to/patch
# cd /usr/src/lib/bind
# make obj && make depend && make && make install
# cd /usr/src/usr.sbin/named
# make obj && make depend && make && make install

Microsoft
---------
Microsoft已经为此发布了一个安全公告(MS08-037)以及相应补丁:
MS08-037:Vulnerabilities in DNS Could Allow Spoofing (953230)
链接:http://www.microsoft.com/technet/security/bulletin/ms08-037.mspx?pf=true

RedHat
------
RedHat已经为此发布了一个安全公告(RHSA-2008:0533-01)以及相应补丁:
RHSA-2008:0533-01:Important: bind security update
链接:https://www.redhat.com/support/errata/RHSA-2008-0533.html

Sun
---
Sun已经为此发布了一个安全公告(Sun-Alert-239392)以及相应补丁:
Sun-Alert-239392:Security Vulnerability in the DNS Protocol may lead to DNS Cache Poisoning
链接:http://sunsolve.sun.com/search/printfriendly.do?assetkey=1-66-239392-1

Gentoo
------
Gentoo已经为此发布了一个安全公告(GLSA-200807-08)以及相应补丁:
GLSA-200807-08:BIND: Cache poisoning
链接:http://security.gentoo.org/glsa/glsa-200807-08.xml

所有BIND用户都应升级到最新版本:

     # emerge --sync
     # emerge --ask --oneshot --verbose ">=3Dnet-dns/bind-9.4.2_p1"

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