2016年9月下旬、オープンソースのDNS(Domain Name System)サーバーソフトである「BIND」(バインド)に深刻な脆弱性が見つかった。細工が施された1個のパケットを送られるだけで、BINDが強制終了させられるものだ。(図1)。BINDの開発元であるInternet Systems Consortium(ISC)が修正版を公開している。管理者はすぐにアップデートしよう。
この脆弱性の原因は、認証や改ざん防止に使われる「TSIG」というデータのサイズチェックの誤りにある。DNSリクエストパケットに含まれるTSIGをある一定の大きさ以上に設定すると、BINDがそのパケットを処理できずに終了してしまう。
インターネットイニシアティブ(IIJ)でDNSサーバーの運用に携わっている島村 充氏は「10月3日には、攻撃が可能であることを示す実証用のコード(PoC:Proof of Concept)が出回っていた」と明かす。実際の被害も出た。Webサイト構築などを手掛けるシーズは10月4日、この脆弱性を突いた攻撃によりDNSサーバーが一時つながりにくい状態になっていたと公表した。
相次ぐ脆弱性にBIND固有の問題
実は、BINDにこうした脆弱性が見つかったのは、今回が初めてではない。日本レジストリサービス(JPRS)が「緊急」と題して報告したBINDの深刻な脆弱性は、この3年だけで12件にも上る(表1)。いずれも攻撃によりDNSサービスを停止させられるものだ。
島村氏によると、背景にはBIND固有の問題があるという。例えば、現行バージョンの9ですら提供開始が2000年と古く、セキュリティがあまり考慮されていない。また、多機能なのでプログラムが複雑で、入力データのチェック漏れが生じやすい構造になっている。
加えて、脆弱性を見つけるためのツールも“進化”している。オープンソースの「american fuzzy lop」といったツールにより、新たな脆弱性が次々と見つかっている。
DNSサーバーソフトにはBIND以外に「Unbound」「NSD」などがある。セキュリティが気になるなら、こうしたソフトの導入を検討してもいいだろう。