安全通告: bind (SA-08:06.bind)
主題: DNS cache poisoning
影響程式: bind
發佈時間: 2008-07-13
影響版本: 所有支援FreeBSD的版本
已修正版本: 2008-07-12 10:07:33 UTC (RELENG_6, 6.3-STABLE)
2008-07-13 18:42:38 UTC (RELENG_6_3, 6.3-RELEASE-p3)
2008-07-13 18:42:38 UTC (RELENG_7, 7.0-STABLE)
2008-07-13 18:42:38 UTC (RELENG_7_0, 7.0-RELEASE-p3)
I. 背景說明
BIND 9 為實現Domain Name System(DNS) 領域名稱系統協定的實作.
named(8) 為其daemon名稱(Internet Domain Name Server).
DNS requests 包含一個查詢id 此id被用來與DNS request及回應匹配,使其更難被其他人使用.
也讓DNS server據此id送出有效的回應.
II. 問題描述
BIND DNS執行遠端查詢時,並沒有採用隨機的UDP來源port,
查詢編號(query id)並未有足夠的隨機生成.
III. 影響
由於缺乏隨機讓功擊者可以去猜測並且執行DNS cache poisoning攻擊.
讓攻擊者可以控制DNS查詢結果並且回應給使用者.
IV. 處理方式(暫時)
限制可以執行遞迴查詢的機器,此動作只能夠降低風險,但不表示此漏洞完全無法執行.
若要採用此方式,可以於 named.conf 加上 相關的ACL規則
/* 新增一個稱之為 example-acl 的規則, 內容為 192.0.2.0/24
請勿照抄 應該改為您這台機器所服務的範圍 */
acl example-acl {
192.0.2.0/24;
};
/* 限定能夠執行遞迴查詢的範圍 */
options {
recursion yes;
allow-recursion { example-acl; };
};
V. 解決方式(正式)
以下方式擇一:
1) 更新受威脅的系統至 6-STABLE 或 7-STABLE,或者 RELENG_7_0 或 RELENG_6_3 .
2) 修補目前系統: 以下修補補丁只被用在 FreeBSD 6.3 及 7.0 系統
a) 下載表列相關patch檔案
[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 #此為您存放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
此更新會讓每次新的查詢使用BIND選擇的隨機的UDP port ,
這很有可能會造成額外的網路設定困擾,特別是那些指定特別port來接收UDP封包的防火牆.
可以透過 avoid-v4-udp-ports 參數(avoid-v6-udp-ports提供給ipv6) 來避免選擇那些被防火牆阻擋的範圍.
說明2:
若 query-source 或者是 query-source-v6 參數同時間被使用,則隨機使用port的參數將不被執行.
強烈建議不要使用上述參數來指定port.
VI. 參考資料
http://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2008-1447
http://www.kb.cert.org/vuls/id/800113