2016.06.28(火)

BIND 9 の TKEY 機能における実装不備により遠隔からサービス不能にされてしまう脆弱性(Scan Tech Report)

脆弱性と脅威 エクスプロイト

1.概要
DNS サーバを構築するためのソフトウェアである BIND 9 に遠隔からサービスを不能とすることが可能となる脆弱性が報告されています。当該脆弱性を利用して攻撃者に DNS サーバの機能を停止され偽の DNS サーバを設立されることにより、攻撃対象者は悪意のある Web コンテンツに誘導されてしまう可能性があります。


2.深刻度(CVSS)
7.8
https://nvd.nist.gov/cvss.cfm?version=2&name=CVE-2015-5477&vector=(AV:N/AC:L/Au:N/C:N/I:N/A:C)


3.影響を受けるソフトウェア※1
以下のバージョンの BIND が当該脆弱性の影響を受ける可能性があります。

- 9.1.0 から 9.8.x 系の全てのバージョン
- 9.9.0 から 9.9.7-P1
- 9.10.0 から 9.10.2-P2

ただし、以上に示したバージョンのソフトウェアでも、OS のベンダが独自にパッチを適用している場合があるため、パッチが場合は当該脆弱性の影響を受けません。


4.解説
DNS サーバを構成するソフトウェアである BIND のバージョン 9 系に、遠隔からサービスを停止させることが可能な脆弱性が報告されています。

BIND 9 では、マスタサーバがスレーブサーバの間でアップデート情報を転送する際に、攻撃者による中間者攻撃などを防ぐために、TSIG 機能というものが存在します。TSIG 機能では、暗号鍵やパスワードによる認証機能を提供しています。当該機能では、サーバとクライアントの間でパスワードを安全に交換するために、TKEY 機能により公開鍵を用いてパスワードの交換を行います。
脆弱性は、TKEY 機能を構成するプログラム lib/dns/tkey.c に含まれる dns_tkey_processquery() メソッドの dns_message_findname() 関数内での変数処理に不備があるため生じています。

DNS プロトコルでは、どのような情報が要求されているかをサーバに伝えるためにクエリレコードが用いられます。攻撃では、クエリレコードのパラメータの内 Name パラメータと Type パラメータが用いられます。Name パラメータは主にドメイン名、Type パラメータにはどのような情報 (MX レコードなど) が要求されているかを指定します。

クエリレコードで宣言された情報が不十分である場合は追加レコードが参照されます。追加レコードでは、クエリレコードで指定された Name パラメータと Type パラメータが一致する情報を検索し、情報の追加を行います。BIND が提供する TKEY 機能に対するクエリでは、lib/dns/tkey.c のメソッドである dns_tkey_processquery() を用いて追加レコードの検索を行います。当該脆弱性は dns_tkey_processquery() メソッドの dns_message_findname() 関数における name 変数の処理の不備に起因しています。

追加レコードで必要な情報が検索できなかった場合は、応答レコードに対して検索を行います。まず、追加レコード内でクエリレコードの Name パラメータ (name 変数) と一致する情報を検索します。一致する情報が一つでも見つかった場合は、一致するすべての情報が foundname 変数に格納され、name 変数が初期化されます。次に、foundname 変数に格納された情報の内、クエリレコードで指定した Type パラメータが一致するものを検索します。この際に TKEY が検索されれば dns_message_findname() 関数は正の戻り値を出力し、応答レコードの検索を行わず情報の検索を終えますが、TKEY が検索できなかった場合は dns_message_findname() 関数内で name 変数の検証で異常が発生し、BIND のプロセスが assertion error により終了します。

実際に当該脆弱性を利用して攻撃を行うためには、以下のクエリを DNS サーバに送信します。

(1) クエリレコードの Type パラメータに "TKEY"、Name パラメータに適当なドメイン名を指定します。
(2) 追加レコードの情報として、クエリレコードと一致する Name パラメータを指定し、Type パラメータに "TKEY" 以外のものを指定する。

当該脆弱性を用いた攻撃によりサービスが停止した場合、/var/log/messages に以下のような行が出力されます。

Aug 31 20:14:51 localhost named[1746]: message.c:2311: REQUIRE(*name == ((void *)0)) failed, back trace


5.対策
当該脆弱性は TKEY 機能を無効にしていても影響を受けるため、設定の変更による対処が出来ません。以下のバージョンに BIND をアップデートすることにより、対処することが可能です。

- 9.9.7-P2
- 9.10.2-P3

また「◆影響を受けるソフトウェア」にも記載した通り、OS によってはパッチが適用されたバージョンにアップデートされる場合もあるため、各ベンダが公開している情報を確認することを推奨します。


6.ソースコード
(Web非公開)

(執筆:株式会社ラック サイバー・グリッド研究所

※Web非公開該当コンテンツ閲覧をご希望の方はScan Tech Reportにご登録(有料)下さい。

Scan Tech Report
http://scan.netsecurity.ne.jp/archives/51916302.html
《株式会社ラック サイバー・グリッド研究所》

編集部おすすめの記事

特集

脆弱性と脅威 アクセスランキング

  1. 複数の「ひかり電話ルータ」および「ひかり電話対応機器」に重大な脆弱性(JVN)

    複数の「ひかり電話ルータ」および「ひかり電話対応機器」に重大な脆弱性(JVN)

  2. WordPress用プラグイン「Welcart e-Commerce」に複数の脆弱性(JVN)

    WordPress用プラグイン「Welcart e-Commerce」に複数の脆弱性(JVN)

  3. Apache Struts 2 において REST プラグインの実装不備により任意のコードが実行されてしまう脆弱性

    Apache Struts 2 において REST プラグインの実装不備により任意のコードが実行されてしまう脆弱性

  4. OS Xなどで使用される「mDNSResponder」に複数の脆弱性(JVN)

  5. コレガ製の複数の無線LANルータに脆弱性(JVN)

  6. Apache Commons FileUpload のマルチパートリクエストの処理に起因する DoS の脆弱性(Scan Tech Report)

  7. 2013年にサポートが終了している「Apache Struts1」に複数の脆弱性(JVN)

  8. 「ntpd」に複数の脆弱性、アップデートを呼びかけ(JVN)

  9. 「Apache Struts 2」に深刻な脆弱性、バージョンアップを強く推奨(ラック)

  10. 少人数による攻撃でも深刻な影響を与える「Slow HTTP DoS Attack」を把握(警察庁)

アクセスランキングをもっと見る

★★ ( FB ログイン可) 会員限定記事、週 1 回のメルマガ、人気ニュースランキング、特集一覧をお届け…無料会員登録はアドレスのみで所要 1 分程度 ★★
★★ ( FB ログイン可) 会員限定記事、週 1 回のメルマガ、人気ニュースランキング、特集一覧をお届け…無料会員登録はアドレスのみで所要 1 分程度 ★★

登録すれば、記事一覧、人気記事ランキング、BASIC 会員限定記事をすべて閲覧できます。毎週月曜朝には一週間のまとめメルマガをお届けします(BASIC 登録後 PREMIUM にアップグレードすれば全ての限定コンテンツにフルアクセスできます)。

×