公開日:2019/11/21 最終更新日:2019/11/21

JVNVU#98706074
ISC BIND にサービス運用妨害 (DoS) の脆弱性

概要

ISC (Internet Systems Consortium) が提供する BIND には、TCP クライアントの同時接続数の制限を迂回され、システムリソースが過度に消費されてしまう脆弱性が存在します。

影響を受けるシステム

  • BIND 9.11.6-P1 から 9.11.12 まで
  • BIND 9.12.4-P1 から 9.12.4-P2 まで
  • BIND 9.14.1 から 9.14.7 まで
  • BIND 9 Supported Preview Edition の BIND 9.11.5-S6 から 9.11.12-S1 まで
  • BIND 9.15 development branch の BIND 9.15.0 から 9.15.5 まで
なお ISC によると、BIND 9.11.0 より前のバージョンは、本脆弱性の検証対象外とのことです。

詳細情報

BIND には、named に対して同時に接続可能な TCP クライアントの数を制限する機能があります。2019年 4月に公開された CVE-2018-5743 への対応として、TCP クライアントからの同時接続数を計算する方法が変更されました。

一方で BIND では、一つの TCP 接続で多数の DNS クエリを並列に処理することができる機能が TCP-pipelining として提供されており、デフォルトで有効に設定されています。
TCP-pipelining が有効な状態においては、一つの TCP クライアントから複数の DNS クエリが発行されると、UDP 接続時や TCP-pipelining が無効な状態における TCP 接続時と同様のシステムリソースが、受け取ったクエリ毎に消費されます。多数のクエリを含む TCP 接続がクローズされた場合、それぞれのクエリに割り当てられたリソースの開放処理が同時に発生し、サーバが一時的あるいは断続的に応答不能な状態に陥る可能性があります。

想定される影響

リモートの攻撃者が上記のような状況を発生させることにより、システムリソースが過度に消費され、サービスが一時的あるいは断続的に停止させられる可能性があります。

対策方法

ワークアラウンドを実施する
次のワークアラウンドを実施することで、本脆弱性の影響を軽減することが可能です。

  • TCP-pipelining を無効に設定し、 BIND を再起動する
    keep-response-order { any; };

なお、接続中の TCP クライアントで有効化された設定を破棄するために、設定の 'reload''reconfig' ではなく BIND の再起動が必要になります。

アップデートする
開発者が提供する情報をもとに、使用している BIND バージョンに対応したパッチを適用してください。

  • BIND 9.11.13
  • BIND 9.14.8
  • BIND 9.15.6
  • BIND 9.11.13-S1 (BIND Supported Preview Edition)

ISC によると、このパッチによりサーバ側のメモリリーク問題が修正されます。
パッチ適用後も、TCP-pipelining により膨大なクエリが発生した場合に、一部の応答がドロップされる可能性があります。

参考情報

  1. JPRS
    (緊急)BIND 9.xの脆弱性(システムリソースの過度な消費)について(CVE-2019-6477)

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

CVSS v3 CVSS:3.0/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
基本値: 7.5
攻撃元区分(AV) 物理 (P) ローカル (L) 隣接 (A) ネットワーク (N)
攻撃条件の複雑さ(AC) 高 (H) 低 (L)
必要な特権レベル(PR) 高 (H) 低 (L) 不要 (N)
ユーザ関与レベル(UI) 要 (R) 不要 (N)
スコープ(S) 変更なし (U) 変更あり (C)
機密性への影響(C) なし (N) 低 (L) 高 (H)
完全性への影響(I) なし (N) 低 (L) 高 (H)
可用性への影響(A) なし (N) 低 (L) 高 (H)
CVSS v2 AV:N/AC:L/Au:N/C:N/I:N/A:C
基本値: 7.8
攻撃元区分(AV) ローカル (L) 隣接 (A) ネットワーク (N)
攻撃条件の複雑さ(AC) 高 (H) 中 (M) 低 (L)
攻撃前の認証要否(Au) 複数 (M) 単一 (S) 不要 (N)
機密性への影響(C) なし (N) 部分的 (P) 全面的 (C)
完全性への影響(I) なし (N) 部分的 (P) 全面的 (C)
可用性への影響(A) なし (N) 部分的 (P) 全面的 (C)

謝辞

関連文書

JPCERT 緊急報告 ISC BIND 9 の脆弱性に関する注意喚起
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE CVE-2019-6477
JVN iPedia