NTPの脆弱性について

投稿者: | 2014年2月28日

昨今JPCERTコーディネーションセンターから注意喚起された
NTPの脆弱性について仕組みを簡単に説明したいと思います。
NTPとはNetwork Time Protocolの略で、ネットワークに接続される
機器などの時計を正確な時刻へ同期するための仕組みです。
上記の仕組みを実装した代表的なプログラムがntpdとなります。
ntpdにはmonlistというNTPサーバが過去にやり取りした600件の
アドレスを返すというコマンドが存在します。
具体的には下記のようなコマンドをネットワーク上のNTPサーバに
問い合わせ、それに対する返答が最大600件のアドレス情報になります。
・コマンド
ntpdc –c monlist XXX.XXX.XXX.XXX
・結果
remote address port local address count m ver rstr avgint lstint
============================================================
XXX.XXX.XXX.XXX XXX XXX.XXX.XXX.XXX X X X XX XXX XXX
XXX.XXX.XXX.XXX XXX XXX.XXX.XXX.XXX X X X XX XXX XXX
…以下最大600件
コマンドのバイト数に対して結果のバイト数は最大で200倍を
超えるそうです。
この仕組にどのような脆弱性が存在するかというと、
問い合わせ元のIPアドレスを偽装できてしまうという点にあります。
コマンドを送信する際に問い合わせ元のIPアドレスを
偽造する事によって、NTPサーバから問い合わせの結果を
偽造したIPアドレスに送らせる事ができます。
上記によって、踏み台攻撃が成立します。
※踏み台攻撃とはサーバの脆弱性を悪用して、
 第三者を攻撃するという手法です。
 攻撃された側から見た場合、踏み台にされた
 サーバから攻撃されたように見えます。
また、前述した通りコマンドに対しての結果バイト数の増幅率が高く、
小さな力で大きな攻撃ができるという恐ろしさがあります。
この手法を増幅攻撃と言います。
また、NTPサーバという特性上、比較的容易にネットワーク上から
サーバを見つける事ができます。
その為、踏み台攻撃を行うのは非常に容易です。

20140228-ntp2.png

NTPの脆弱性を持つサーバ自体には大きな影響はありませんが、
第三者のサーバに対する攻撃の踏み台にされる危険性があります。
早いうちに対策を行ってください。
対策の詳しい方法は下記のページをご参考ください。
■JPCERTコーディネーションセンター
「ntpd の monlist 機能を使った DDoS 攻撃に関する注意喚起」
http://www.jpcert.or.jp/at/2014/at140001.html