2016年9月下旬、オープンソースのDNS(Domain Name System)サーバーソフトである「BIND」(バインド)に深刻な脆弱性が見つかった。細工が施された1個のパケットを送られるだけで、BINDが強制終了させられるものだ。(図1)。BINDの開発元であるInternet Systems Consortium(ISC)が修正版を公開している。管理者はすぐにアップデートしよう。

図1●今回の脆弱性を悪用すると簡単にDNSサービスを落とせる
図1●今回の脆弱性を悪用すると簡単にDNSサービスを落とせる
今回報告された脆弱性(CVE-2016-2776)の原因は、認証や改ざん防止に使われる「TSIG」というデータのサイズチェックにある。一定の大きさ以上のTSIGを含むDNSリクエストパケットを送られるだけで、BINDが強制終了してしまう。
[画像のクリックで拡大表示]

 この脆弱性の原因は、認証や改ざん防止に使われる「TSIG」というデータのサイズチェックの誤りにある。DNSリクエストパケットに含まれるTSIGをある一定の大きさ以上に設定すると、BINDがそのパケットを処理できずに終了してしまう。

 インターネットイニシアティブ(IIJ)でDNSサーバーの運用に携わっている島村 充氏は「10月3日には、攻撃が可能であることを示す実証用のコード(PoC:Proof of Concept)が出回っていた」と明かす。実際の被害も出た。Webサイト構築などを手掛けるシーズは10月4日、この脆弱性を突いた攻撃によりDNSサーバーが一時つながりにくい状態になっていたと公表した。

相次ぐ脆弱性にBIND固有の問題

 実は、BINDにこうした脆弱性が見つかったのは、今回が初めてではない。日本レジストリサービス(JPRS)が「緊急」と題して報告したBINDの深刻な脆弱性は、この3年だけで12件にも上る(表1)。いずれも攻撃によりDNSサービスを停止させられるものだ。

表1●BINDに見つかった深刻な脆弱性
表1●BINDに見つかった深刻な脆弱性
直近3年で日本レジストリサービス(JPRS)が報告した「緊急」の脆弱性。いずれもDNSサービスを停止させるものだ。
[画像のクリックで拡大表示]

 島村氏によると、背景にはBIND固有の問題があるという。例えば、現行バージョンの9ですら提供開始が2000年と古く、セキュリティがあまり考慮されていない。また、多機能なのでプログラムが複雑で、入力データのチェック漏れが生じやすい構造になっている。

 加えて、脆弱性を見つけるためのツールも“進化”している。オープンソースの「american fuzzy lop」といったツールにより、新たな脆弱性が次々と見つかっている。

 DNSサーバーソフトにはBIND以外に「Unbound」「NSD」などがある。セキュリティが気になるなら、こうしたソフトの導入を検討してもいいだろう。