情報処理推進機構(IPA)とJPCERTコーディネーションセンター(JPCERT/CC)が共同で運営する脆弱性関連情報ポータルサイト「JVN(Japan Valnerability Notes)」は2014年12月22日、IT機器の時刻合わせに広く使われているサーバーソフト(デーモン)の「Network Time Protocol daemon(ntpd)」に複数の脆弱性が見つかったことを伝えた。発見された脆弱性の中には、不正に細工されたNTPパケットを一つ受け取るだけで、サーバーがいきなり乗っ取られる危険性があるものも含まれている。

 見つかった脆弱性は四つ。(1)設定ファイルntp.conf中でauth keyを設定していない場合に、暗号強度が低いデフォルト鍵が生成される問題、(2)古いバージョンのntp-keygenが、弱いシード値を使って乱数を発生し、これを基に暗号強度の低い対称鍵を生成する問題、(3)crypto_recv()など三つの関数に、パケット処理に関するバッファオーバーフローの脆弱性が存在する問題(autokey認証利用時)、(4)特定のエラー処理を行うコードに不備があり、エラー発生時に処理が停止しない問題---である。

 NTPサーバーの管理者が特に注意すべきは(3)のバッファオーバーフローの脆弱性だろう。同脆弱性を突かれると、ntpdを動作させているユーザーの権限で任意のコマンドを実行される危険がある。もしntpdをroot権限で動作させていればシステム上で任意のコマンドを実行される。制限されたユーザー権限(ntpユーザーなど)で動かしている場合でも、Linuxカーネルでつい最近も見つかった権限昇格の脆弱性などを狙われることで、サーバーを乗っ取られる危険性がある。

 他の多くの脆弱性と異なり、NTPが「UDP(User Datagram Protocol)」を利用するタイプのサービスであるという点にも注目したい。Webアクセス(HTTP)やメール(SMTP/POPなど)といった一般的なサービスが利用しているTCP(Transmission Control Protocol)と異なり、UDPでは通信に先立ってサーバーとクライアント間での接続(コネクション)を確立する手順が必要ない。

 このため、攻撃者は脆弱性を持つntpdが稼働するNTPサーバーに対して、細工したパケットをただ送り付けるだけで攻撃を行える。しかも、攻撃側は接続手順が必要ないことに加えてNTPサーバーからの「戻りのパケット」を受け取る必要もない。このため、攻撃者は送信元IPアドレスを偽装したUDPパケットを用いることで、身元を隠しつつサーバーに対して一方的に攻撃を行える。サーバー側は、送信元IPアドレスを基にアクセスを制限することが難しく、どこから攻撃されたかも正しくログに記録されない。

 今回見つかった四つの脆弱性に対処するには最新バージョン(18日にリリースされた最新安定版のバージョン4.2.8など)にアップデートすることが必要となる。