2012年10月26日金曜日

bind で minimal-responses yes; とした際の動作 (CVE-2012-5166 に関連して)

こんにちは、サイオステクノロジーの金田です。

ネームサーバ (DNS) ソフト BIND の脆弱性、CVE-2012-5166 についての 情報 (ISC.org、日本語) において、「一時的な回避策: "minimal-responses"オプションを"yes"に設定することで回避可能です。」という情報が掲載されています。

minimal-responses のマニュアル*1記載内容は、以下のとおりで、

minimal-responses
If yes, then when generating responses the server will only add records to the authority
and additional data sections when they are required (e.g. delegations, negative responses).
This may improve the performance of the server.
The default is no.

委任応答 (delegations) あるいは ネガティブ応答 (negative responses) といった応答で、必要に応じて、AUTHORITY データセクションと ADDITIONAL データセクションをレコードに追加する」、と読めます。

*1: BIND 9.5 Administrator Reference Manual から options Statement Definition and Usage または、/usr/share/doc/bind-9.8.2/arm/Bv9ARM.ch06.html

そこで今回は、BIND で "minimal-responses"オプションを"yes" と設定した際、どのような動作になるかをご紹介します。

検証環境のディストリビューションは CentOS/Scientific Linux 6.3bind はディストリビューション同梱の bind-9.8.2-0.10.rc1.el6 を使用します。

比較のために、named.conf 内で options { minimal-responses no; } に設定しているサーバ (namesva)と、options { minimal-responses yes; } に設定しているサーバ (namesvb) を用意し、動作を比較します。なお、経路中に弊社のDNSサーバが挟まっています。

さて、実行結果を示す前に補足があります。いきなり $ dig example.com ANY を実行しても以下のようにはなりません。SOANSA レコードなどの情報をあらかじめ要求・取得しておきます。

では、実行結果です。RRSIGDS レコードは省略しています。

$ dig @namesva example.com. ANY

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @namesva example.com. ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 13461
;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 2, ADDITIONAL: 2

;; QUESTION SECTION:
;example.com.   IN ANY

;; ANSWER SECTION:
example.com.  3584 IN SOA dns1.icann.org. hostmaster.icann.org. 2012081300 7200 3600 1209600 3600
example.com.  172778 IN TXT "v=spf1 -all"
example.com.  11659 IN A 192.0.43.10
example.com.  164619 IN NS b.iana-servers.net.
example.com.  164619 IN NS a.iana-servers.net.
example.com.  164619 IN AAAA 2001:500:88:200::10

;; AUTHORITY SECTION:
example.com.  164619 IN NS b.iana-servers.net.
example.com.  164619 IN NS a.iana-servers.net.

;; ADDITIONAL SECTION:
b.iana-servers.net. 1661 IN A 199.43.133.53
a.iana-servers.net. 1661 IN A 199.43.132.53

;; Query time: 0 msec
;; SERVER: 10.1.X.11#53(10.1.X.11)
;; WHEN: Wed Oct 24 14:08:28 2012
;; MSG SIZE  rcvd: 1026
$ dig @namesvb example.com. ANY

; <<>> DiG 9.8.2rc1-RedHat-9.8.2-0.10.rc1.el6 <<>> @namesvb example.com. ANY
; (1 server found)
;; global options: +cmd
;; Got answer:
;; ->>HEADER<<- opcode: QUERY, status: NOERROR, id: 63623
;; flags: qr rd ra; QUERY: 1, ANSWER: 12, AUTHORITY: 0, ADDITIONAL: 0

;; QUESTION SECTION:
;example.com.   IN ANY

;; ANSWER SECTION:
example.com.  3584 IN SOA dns1.icann.org. hostmaster.icann.org. 2012081300 7200 3600 1209600 3600
example.com.  172778 IN TXT "v=spf1 -all"
example.com.  11659 IN A 192.0.43.10
example.com.  164619 IN NS a.iana-servers.net.
example.com.  164619 IN NS b.iana-servers.net.
example.com.  164619 IN AAAA 2001:500:88:200::10

;; Query time: 0 msec
;; SERVER: 10.1.X.12#53(10.1.X.12)
;; WHEN: Wed Oct 24 14:08:28 2012
;; MSG SIZE  rcvd: 966

namesva からは、AUTHORITY SECTIONADDITIONAL SECTION も含め返ってきましたが、namesvb からは ANSWER SECTION のみが返ってきました。

この時のキャッシュ情報を比較してみます。(各サーバで "rndc dumpdb" 実行後、/var/named/data/cache_dump.db を参照。RRSIG などは省略しています。)

namesvacache_dump.db

; answer
example.com.            3566    SOA     dns1.icann.org. hostmaster.icann.org. (
                                        2012081300
                                        7200
                                        3600
                                        1209600
                                        3600)
; answer
                        164601  NS      b.iana-servers.net.
                        164601  NS      a.iana-servers.net.
; answer
                        11641   A       192.0.43.10
; answer
                        172760  TXT     "v=spf1 -all"
; answer
                        164601  AAAA    2001:500:88:200::10
; answer
a.iana-servers.net.     1643    A       199.43.132.53
; answer
b.iana-servers.net.     1643    A       199.43.133.53

namesvbcache_dump.db

; answer
example.com.            3509    SOA     dns1.icann.org. hostmaster.icann.org. (
                                        2012081300
                                        7200
                                        3600
                                        1209600
                                        3600)
; answer
                        164544  NS      a.iana-servers.net.
                        164544  NS      b.iana-servers.net.
; answer
                        11584   A       192.0.43.10
; answer
                        172703  TXT     "v=spf1 -all"
; answer
                        164544  AAAA    2001:500:88:200::10
; answer
a.iana-servers.net.     1586    A       199.43.132.53
; answer
b.iana-servers.net.     1586    A       199.43.133.53

TTL の値を除けば同じ情報をキャッシュしていることがわかります。

ただし、問い合わせドメインやクエリータイプによっては、 namesvb (options { minimal-responses yes; } と設定しているサーバ) でも AUTHORITY SECTION が含まれることもあります。

なお、日常的にはアプリケーションがリゾルバ経由で情報を取得することがほとんどと思われますが、ADDITIONAL セクションで情報が得られない場合は、リゾルバが必要な情報を取得しにいきますので、クライアントサイドでの影響はありません。

最後に、CVE-2012-5166 に対応したアップデートパッケージが、各ディストリビューションからリリースされていますので、以下に列挙します。

(終)

0 件のコメント:

コメントを投稿