DNS関連技術情報のトップへ戻る

---------------------------------------------------------------------
■(緊急)GNU C Library(glibc)の脆弱性について(CVE-2015-7547)
  - 関連情報の収集・パッチの適用を強く推奨 -

                                株式会社日本レジストリサービス(JPRS)
                                            初版作成 2016/02/18(Thu)
                                            最終更新 2016/02/23(Tue)
              (脆弱性の影響を軽減可能なフルリゾルバーの条件を明確化)
---------------------------------------------------------------------

▼概要

  2016年2月16日(協定世界時)、GNU C Library(以下、glibc)の名前解決
  ライブラリgetaddrinfo関数の脆弱性に関する緊急の注意喚起が公開されま
  した。本脆弱性はDNS応答の取り扱いの不具合に由来しており、リモートで
  コードが実行される可能性があることが、開発元のGNU Project、及び報告
  者のGoogle/Red Hatから発表されています。

  glibcは、Linuxの多くのディストリビューションにおける標準Cライブラリ
  となっています。また、Linuxをベースとしたネットワーク機器やアプライ
  アンス製品なども、本脆弱性の対象となる可能性があります。

  対象となっている、あるいは対象となる可能性のあるシステム・機器・製品
  を利用しているユーザーは、ベンダーへの状況確認を含む関連情報の収集・
  パッチの適用など、適切な対応を速やかに取ることを強く推奨します。

▼影響軽減策と適用時の注意点

  本脆弱性の解決策はパッチの適用です。しかし、パッチを即座に適用できな
  い場合を想定した暫定的な影響軽減策が、開発元及び報告者から紹介されて
  います。ここでは、その概要と適用時の注意点について解説します。

  本脆弱性は2,048バイトを超えるDNS応答の取り扱いの不具合に由来するため、
  以下で解説する対策は基本的に、該当する応答を受信しないようにするもの
  となっています。また、これらの対策は暫定的かつ限定的なものであり、
  パッチの適用後、従来の設定に戻す必要があることに注意が必要です。

▽クライアント側で大きなDNS応答を受け取る可能性を減らす

 ◇概要

   glibcの名前解決ライブラリでは、512バイトを超える応答をUDPで取り扱う
   ための拡張機能であるEDNS0がデフォルトで有効にされておらず、通常の場
   合クライアントがフルリゾルバー(キャッシュDNSサーバー)から512バイ
   トを超えるDNS応答をUDPで受け取ることはありません(*1)。

   (*1)対象となる機器の/etc/resolv.confでoptions edns0が設定されてい
         た場合、削除またはコメントアウトする必要があります。

 ◇注意点

   フルリゾルバーからの応答サイズが512バイトを超えた場合TCPフォールバッ
   クが発生し、TCPで大きな応答を受け取る可能性があることに注意が必要です。

 ◇補足情報

   (2016年2月23日更新)ローカルホストでフルリゾルバーを動作させそれを
   利用するなど、以下の二つの対応を行うことにより悪意を持つDNS応答を外
   部から直接受け取る可能性を低減できます(*2)。

   ・ユーザーが利用するフルリゾルバーを、信頼できるサーバーに制限する
   ・フルリゾルバーへのアクセスは、攻撃を受けることのない信頼できるネッ
     トワークのみを利用する

   (*2)US-CERTが2015年8月に公開した注意喚起において、組織内ネットワー
         クから外部のキャッシュDNSサーバー(caching name servers)への
         アクセスを制限することを推奨しています。

         Alert (TA15-240A)
         Controlling Outbound DNS Access
         <https://www.us-cert.gov/ncas/alerts/TA15-240A>

▽フルリゾルバー側からクライアントに送られるDNS応答サイズを制限する

 ◇概要

   フルリゾルバーからクライアントに送信されるDNS応答サイズを一時的に制
   限することで、本脆弱性の影響を軽減できます。報告者のGoogleでは、
   Dnsmasqあるいは同様のプログラムにより、こうした制限値を設定可能であ
   るとしています(JPRSでは未確認)(*3)。

   (*3)フルリゾルバー/権威DNSサーバーにおけるメッセージバッファサイ
         ズの設定、例えばBINDのmax-udp-sizeやedns-udp-sizeはUDPの応答
         サイズのみを変更するものであり、TCPの応答サイズには影響を及ぼ
         しません。また、Unboundではmsg-buffer-sizeオプションでUDP/TCP
         双方のメッセージバッファサイズを設定できますが、設定可能な最
         小値は4096となっており、本脆弱性の影響軽減策とはなりません。

   また、一時的な回避策として、組織内のネットワーク機器においてこのよ
   うな制限値を導入する対策も考えられます。

 ◇注意点

   このような制限を導入した場合、一部のクライアントの動作に悪影響が出
   る可能性があるため、導入には細心の注意が必要です。

 ◇補足情報

   DNSの名前解決における権威DNSサーバーとフルリゾルバー間の通信は本脆
   弱性の対象外であり、制限の必要はありません(*4)。

   (*4)当該通信を制限した場合DNSの動作に致命的な影響を及ぼす可能性が
         あり、推奨されません。

▼よくある質問とその回答

  本件に関するよくある質問と回答をまとめます。

  Q01. 対象となるglibcのバージョンはいくつか?
  A01. 2.9以降のすべてのglibcが対象となる。

  Q02. 本脆弱性はglibcに特有のものなのか?
  A02. そうである。glibc以外の実装は本脆弱性の対象外である。

  Q03. BINDには影響があるのか?
  A03. 開発元のISCでは、本脆弱性によるBINDそのもののバージョンアップの
       必要はないと発表している。ただし、BINDに付属のdigコマンドは
       getaddrinfo関数を使用しており、digコマンドを利用する場合glibcの
       パッチを適用する必要がある。

  Q04. AndroidはLinuxベースだが、本脆弱性の対象となるのか?
  A04. Androidはglibcを標準Cライブラリとして採用しておらず、OSとしては
       本脆弱性の対象とならない。ただし、アプリケーションにおいてglibc
       を独自に採用している場合、本脆弱性の対象となる可能性がある。

  Q05. 使用中のシステム・機器・製品が本脆弱性の対象となるかが知りたい。
  Q05. それぞれの機器ベンダーに問い合わせてほしい。

  Q06. NATの裏側なら大丈夫か?
  A06. 今回の脆弱性は名前解決ライブラリの内部処理に由来しており、NATの
       裏側に接続されていても、本脆弱性の影響を受ける可能性がある。

  Q07. 本脆弱性による具体的な被害事例は報告されているのか?
  A07. 現時点では報告されていない。

  Q08. PoCは既にあるのか?
  A08. 名前解決をしたプロセスをダウンさせるPoCが既に公開されている。ま
       た、報告者はリモートでのコード実行が可能であることを確認してい
       るが、影響の大きさから公開しない予定であるとしている。

  Q09. 本注意喚起で解説している影響軽減策にはどの程度の効果があるのか?
  A09. あくまで暫定的かつ限定的な影響軽減策であり、パッチの適用が根本
       的な対策である。また、パッチの適用後は従来の設定に戻す必要があ
       ることに注意が必要。

▼参考リンク

  - GNU Project

    [PATCH] CVE-2015-7547 --- glibc getaddrinfo() stack-based buffer overflow
    <https://www.sourceware.org/ml/libc-alpha/2016-02/msg00416.html>

  - Google Online Security Blog

    CVE-2015-7547: glibc getaddrinfo stack-based buffer overflow
    <https://googleonlinesecurity.blogspot.jp/2016/02/cve-2015-7547-glibc-getaddrinfo-stack.html>

  - Red Hat

    Critical security flaw: glibc stack-based buffer overflow in
    getaddrinfo() (CVE-2015-7547)
    <https://access.redhat.com/articles/2161461>

  - MITRE

    CVE - CVE-2015-7547
    <https://cve.mitre.org/cgi-bin/cvename.cgi?name=CVE-2015-7547>

  - JPCERT/CC

    glibc ライブラリの脆弱性 (CVE-2015-7547) に関する注意喚起
    <https://www.jpcert.or.jp/at/2016/at160009.html>

  - Japan Vulnerability Notes

    JVNVU#97236594: glibc にバッファオーバーフローの脆弱性 緊急
    <https://jvn.jp/vu/JVNVU97236594/>

▼連絡先

  本文書に関するお問い合わせは <dnstech-info@jprs.jp> までご連絡ください。

---------------------------------------------------------------------
▼更新履歴
  2016/02/18 18:00 初版作成
  2016/02/23 15:00 脆弱性の影響を軽減可能なフルリゾルバーの条件を明確化
----------------------------------------------------------------------


株式会社日本レジストリサービス Copyright©2001-2016 Japan Registry Services Co., Ltd.