dnsmasq: 複数の重大および重要な脆弱性

Public Date: October 2, 2017, 12:00 am
Updated -
Ongoing Status
Critical Impact

Red Hat Product セキュリティーチームは、dnsmasq に影響する複数の脆弱性が存在することを認識しています。これらの脆弱性の 3 件 (CVE-2017-14491CVE-2017-14492、および CVE-2017-14493) は 重大な影響 と評価され、残りの 4 件 (CVE-2017-14494CVE-2017-14495CVE-2017-14496、および CVE-2017-13704) は 重要な影響 と評価されています。これらの問題は、2017 年 10 月 2 日 に公表されました。

背景情報

dnsmasq は一般的な軽量 DNS および DHCP サーバーで、多くのホームネットワークやクラウド環境でキャッシング DNS スタブリゾルバーとして使用され、DHCP リースの管理に使用されています。dnsmasq は Red Hat Enterprise Linux で提供されており、libvirt などのアプリケーションや多数のレイヤード製品で直接使用されます。dnsmasq はリソース消費が少なく、設定が簡単で柔軟性があるため、多くのベンダーが推奨しています。大規模なデプロイメントや権限を持つネームサーバーとしての使用は推奨されませんが、小規模な LAN 環境やクラウド環境でローカルのキャッシングリゾルバーとして一般的に使用されています。

脆弱性の詳細

これらの脆弱性のうち 6 件は、Google によって発見および公開されました。残りの 1 件 (CVE-2017-13704) はすでに公開済みで、dnsmasq git リポジトリーで修正されています。脆弱性によって DHCP の機能と DNS に影響するものがあり、影響の範囲はクラッシュや無限のリソース消費から潜在的なコード実行まで及びます。これら 7 件の脆弱性はすべて、ネットワーク上の悪意のあるユーザーによる悪用が可能です。

CVE重大度影響を受けるバージョン影響の対象不具合の内容
CVE-2017-14491重大すべてのバージョンDNSヒープのバッファーオーバーフロー
CVE-2017-14492重大2.60 - 2.66IPv6 RAヒープのバッファーオーバーフロー
CVE-2017-14493重大2.60 - 2.66DHCPv6スタックのバッファーオーバーフロー
CVE-2017-14494重要2.60 - 2.66DHCPv6情報の漏えい
CVE-2017-14495重要2.76EDNS0メモリーの枯渇
CVE-2017-14496重要2.76EDNS0セグメンテーション違反
CVE-2017-13704重要2.77DNSセグメンテーション違反

脆弱性によっては、特定のオプションを有効にすると dnsmasq が脆弱になるものがあります。これらのオプションはコマンドラインで表示されたり、設定ファイルに存在する可能性があります。

CVEdnsmasq を脆弱にする設定オプション
CVE-2017-14492enable-ra slaac ra-only ra-names ra-advrouter ra-stateless
CVE-2017-14495add-mac add-cpe-id add-subnet
CVE-2017-14496add-mac add-cpe-id add-subnet

CVE-2017-14491: 重大な影響

最も深刻な脆弱性で、これはサポートされる Red Hat 製品に含まれる dnsmasq のすべてのバージョンに影響する唯一のものです。この不具合を悪用するには、攻撃者は悪意のあるドメイン (例: evil.com) を制御し、dnsmasq に DNS リクエストを送信する必要があります。すると、dnsmasq はそのドメインからの返答をキャッシュします。攻撃者が DNS リクエストと応答を巧妙に作成することで、dnsmasq は攻撃者が影響を及ぼしたコンテンツを使用して、ヒープの内部バッファーをオーバーフローさせるようになります。これを使用すると、コード実行が可能になります。

CVE-2017-14492 および CVE-2017-14493: 重大な影響

これら 2 件の脆弱性は IPv6/DHCPv6 の機能に存在し、バッファーオーバーフローを引き起こします (それぞれヒープとスタック)。どちらもコード実行を可能としますが、gcc の Stack Smashing Protector (Red Hat Enterprise Linux 5、6、および 7 で有効になっている) を使用することで、CVE-2017-14493 の影響は実質的にクラッシュのみに軽減できます。

DHCP が有効で IPv6 インターフェースにバインドされている場合、dnsmasq インスタンスが影響を受けるのはこれら 2 件の脆弱性のみになります。また攻撃者は、巧妙に作成された DHCPv6 または IPv6 ルーターアドバタイズメントメッセージをサーバーに送信できる必要があります。通常、これにはローカルネットワーク上のホストで管理者 (root) 権限が必要になります。

DHCPv6 および IPv6 ルーターアドバタイズメントのサポートは dnsmasq 2.60 以降のバージョンで導入されたため、これ以前のバージョンにはこれらの脆弱性による影響はありません。脆弱なコードが dnsmasq バージョン 2.66 より前 (Red Hat Enterprise Linux 7.2 および 7.3 に同梱) に導入されたことは判明していますが、厳密にどのリリースで導入されたかは特定されていません。

CVE-2017-14495: 重要な影響

この脆弱性も DHCPv6 のみに存在します。攻撃者は dnsmasq に境界を超えて読み取りをさせ、DHCPv6 レスポンスパケットの独自のメモリーにある内容の一部を公開することができます。攻撃者によるクラッシュや dnsmasq の制御はできないと思われますが、公開された情報を別の不具合で利用して軽減策を回避できるようになる可能性があるほか、公開された情報自体が機密情報である可能性もあります。

前述の 2 件の脆弱性と同様に、この脆弱性もバージョン 2.60 から 2.66 までの間に導入され、バージョン 2.78 では修正されています。Red Hat Enterprise Linux 6 および 5 で提供された 2.59 より前のバージョンには影響はありません。

CVE-2017-14495: 重要な影響

この脆弱性は EDNS0 機能 (RFC-2671) に存在し、メモリーの漏えいとして現れます。特定の状況下で応答の EDNS0 部分を作成すると、dnsmasq が中間データ構造を割り当てた後、解放に失敗します。巧妙に選択した DNS リクエストを連続して送信することで、dnsmasq が数キロバイトを各リクエストに割り当てるようになり、利用可能なメモリーがすべて消費されてクラッシュします。

該当コードは dnsmasq バージョン 2.76 で導入されたので、Red Hat Enterprise Linux 7.4 には影響がありますが、それより前のメジャーおよびマイナーバージョンには影響はありません。

CVE-2017-14496: 重要な影響

この脆弱性も EDNS0 コードに存在し、記号混同の不具合を引き起こすことで、memcpy() が負の size 引数で呼び出されるようになります。memcpy() はこれを巨大な正の整数として解釈し、マップされた領域よりも大きな領域をコピーしようとするため、クラッシュが発生します。この不具合を悪用すると、リゾルバーとして dnsmasq に依存する他のすべてのプロセスまたはホストに対してサービス拒否攻撃を行うことが可能になります。

該当コードは dnsmasq バージョン 2.76 で導入されたので、Red Hat Enterprise Linux 7.4 には影響がありますが、それより前のメジャーおよびマイナーバージョンには影響はありません。

CVE-2017-13704: 重要な影響

この脆弱性は CVE-2017-14496 と同様に、記号混同による不具合を引き起こしますが、この脆弱性では size 引数が memset() に提供されてクラッシュが発生します。脆弱な memset() の呼び出しは、CVE-2017-14494 と同様の情報漏えいが発生しないように、強化機能として dnsmasq 2.77 の レスポンスパケットが作成されるゼロバッファーに追加されました。このような情報の漏えいの発生は確認されていなかったため、memset() への呼び出しはあくまでも防止手段でした。不具合を引き起こす可能性があることが判明したため、memset() への引数に対して適切なチェックが導入されました。

この脆弱性はバージョン 2.77 で導入されましたが、バージョン 2.78 では修正されています。影響を受ける Red Hat 製品はありません。

謝辞

これらの不具合は、Felix Wilhelm 氏 (Google Security Team)、Fermin J. Serna 氏 (Google Security Team)、Gabriel Campana 氏 (Google Security Team)、Kevin Hamacher 氏(Google Security Team)、Ron Bowes 氏 (Google Security Team) によって報告されました。ご報告に感謝いたします。

その他の参考資料

https://security.googleblog.com/2017/10/behind-masq-yet-more-dns-and-dhcp.html

影響を受ける製品

Red Hat Product セキュリティーチームは、本件によるセキュリティー上の影響度を重大と評価しています

以下の Red Hat 製品のバージョンが影響を受けます。

  • Red Hat Enterprise Linux 7
  • Red Hat Enterprise Linux 6
  • Red Hat Enterprise Linux 5

攻撃の詳細と影響

dnsmasq のインスタンスにネットワークアクセスがある場合、攻撃が可能になります。これには、(Red Hat Enterprise Linux Atomic Host でのオプションにあるように )dnsmasq をリゾルバーキャッシュとして使用している LAN または WAN にあるクライアントマシンもしくはノードが含まれます。また、libvirt、Red Hat OpenStack Platform または Red Hat OpenShift などでホストされている仮想マシン (これらはネットワークのプロビジョニングの一部に dnsmasq を使用) のユーザーもこれに該当します。

CVE-2017-14491 は dnsmasq のすべてのユーザーに影響する可能性があります。他の脆弱性の悪用には、特別な条件が必要になります。たとえば、CVE-2017-11491、CVE-2017-14495、および CVE-2017-14496 の場合、IPv6、DHCP の有効化、または特別なオプションが必要になります (「概要」タブの表を参照してください)。

SELinux が有効になっている場合は、SELinux ポリシーにより dnsmasq の実行権限はさらに制限されるため、不正アクセスによる影響を軽減することができ、ゲストが完全にホストへ脱出できないようにします。しかし、完全にホストに不正アクセスできなくても、同じ環境でホストされている他のゲスト (仮想マシンまたはコンテナー) に影響する可能性があるため、dnsmasq の DNS や DHCP 機能の乗っ取りは深刻な影響を及ぼします。

脆弱性の診断

システムの脆弱性の判断

システムに脆弱性があるかを判断します。以下の診断スクリプトを使用して、ご使用中のシステムにこの不具合による脆弱性が存在するかどうかを判断します。正規のスクリプトであることを確認するために、GPG 分離署名 もダウンロードできます。このスクリプトの現在のバージョンは 1.0 です。

対処方法

影響のあるバージョンの dnsmasq をご使用のお客様は、パッチのリリース直後に更新することが強く推奨されます。一部の脆弱性には軽減策を使用できますが (IPV6 の無効化など)、すべての脆弱性から保護する軽減策はないため、早急に更新を適用してください。

影響を受ける製品の更新

製品パッケージアドバイザリー/更新
Red Hat Enterprise Linux 7dnsmasqRHSA-2017:2836
Red Hat Enterprise Linux 7.2 および 7.3 Extended Update Support**dnsmasqRHSA-2017:2837
Red Hat Enterprise Linux 6dnsmasqRHSA-2017:2838
Red Hat Enterprise Linux 6.7 Extended Update Support**dnsmasqRHSA-2017:2839
Red Hat Enterprise Linux 6.5 および 6.6 Advanced Update Support***、Telco Extended Update Support****dnsmasqRHSA-2017:2839
Red Hat Enterprise Linux 6.2 および 6.4 Advanced Update Support***dnsmasqRHSA-2017:2839
Red Hat Enterprise Linux 5 Extended Lifecycle Support*dnsmasqRHSA-2017:2840
Red Hat Enterprise Linux 5.9 Advanced Update Support***dnsmasqRHSA-2017:2841

*このパッチを取得するには、有効な ELS サブスクリプションが必要です

お持ちのアカウントに有効な ELS サブスクリプションがない場合は、Red Hat 営業部門または営業の担当者にお問い合わせください。

*このパッチを取得するには、有効な EUS サブスクリプションが必要です

お持ちのアカウントに有効な EUS サブスクリプションがない場合は、Red Hat 営業部門または営業の担当者にお問い合わせください。

Red Hat Enterprise Linux Extended Update Support サブスクリプションとは何ですか?

***RHEL AUS のパッチを入手するには、有効な AUS サブスクリプションが必要です

**RHEL TUS のパッチを入手するには、アクティブな TUS サブスクリプションが必要です