Linux Foundation の Core Infrastructure Initiative のメンバーであるシスコは、Network Time Protocol デーモン(ntpd)のセキュリティの不具合を評価することで、CII の活動に貢献しています。当社はこれまでにも、ソフトウェアのさらなる脆弱性を特定する調査を継続的に実施しており、ntpd の一連の脆弱性を確認しました。
2013 年より、増幅 Denial of Service(DoS)攻撃には NTP パケットが悪用されてきました。ntpd が攻撃対象になりやすいことの理由は、その普遍性と、多数のサービスが正常に機能するための時刻調整の重要性です。ntpd が攻撃対象になりやすいことの理由は、その普遍性と、多数のサービスが正常に機能するための時刻調整の重要性です。これにより、攻撃者はアクティブ化の時刻が来るのを避けて、時刻に依存するサービスの開始を妨げたり、サービスのアクティブ化の時刻が繰り返し来るようにしてシステム リソースを枯渇させたりすることができます。また、期限切れの証明書を使用してシステムへアクセスしたり、適正なサービスやキャッシュを期限切れにすることでサービスを拒否したりすることもできます。したがって、タイム サービス内の脆弱性を特定し、修復することが重要なのです。
シスコは、ntpd 内に 6 つの脆弱性を発見しました。攻撃者はこれらの脆弱性を利用して、UDP パケットを巧妙に細工し、DoS の状態を発生させたり、時刻が正しく設定されないようにしたりします。シスコは、すべてのユーザに対して、最新バージョンの ntpd へのアップグレードを推奨します。
CVE-2016-1550 NTP Authentication Potential Timing Vulnerability
発見者:Cisco ASIG の Matthew Van Gundy および Stephen Gray
NTP パケットには、RFC5905 で説明されているとおり、鍵 ID(連携するシステム間で共有される 128 ビットの秘密鍵を指定するのに使用される、32 ビットの符号なし整数)を含めることができます。この鍵を使用してパケットの MD5 メッセージ ダイジェストの値を計算し、受信者に対する送信者を認証します。
パケット内のダイジェストと秘密鍵を使用してクライアントが計算した値が一致しない場合、そのパケットは拒否されます。受信者は crypto-NAK パケットを送信者に送り、ダイジェストが誤っていることを通知します。ただし、このパケットが送信されるタイミングから、オブザーバはダイジェストのどこで不一致が発生しているかを知ることができます。不一致が最初の方のバイトにある場合、後の方にある場合よりも crypto-NAK が早く生成されます。攻撃者は、MD5 ダイジェストに対してブルートフォース アタックを行い、crypto-NAK パケットが返されるタイミングを調べることによって、共有鍵の値を把握することができます。鍵の値を把握した攻撃者は、偽装された NTP パケットを送信することができ、受信者はそのパケットを正当なものとして認証してしまう恐れがあります。
脆弱性が確認されているバージョンは以下のとおりです。
ntp 4.2.8p4、NTPSec a5fb34b9cc89b92a8fef2f459004865c93bb7f92
他のバージョンについても影響を受ける可能性があります。
CVE-2016-1551 NTP Refclock Impersonation Vulnerability
発見者:Cisco ASIG の Matt Street および協力者
ntpd は、127.127.0.0/16 ネットワークから送信される基準クロックの NTP トラフィックを暗黙的に信頼します。つまり、攻撃者が 127.127.0.0/16 の範囲にある IP アドレスから、偽装された NTP パケットを送信することに成功すると、基準クロックで設定されているシステムは、この攻撃者を信頼できると見なすのです。
ネットワーク範囲 127.0.0.0/8 は RFC1918 に従うとプライベートであり、このようなトラフィックは本来オペレーティング システムやルータによってフィルタで除外され、ntpd には到達しないはずです。しかし、攻撃者が偽装されたパケットの送信に成功し、自身をターゲット システムの信頼できるピアとして確立すると、攻撃者はこの関係を利用して、ターゲット システムの時刻を変更することができるのです。
実際には、ほとんどの最新のオペレーティング システムでは、このようなパケットは ntpd に到達する前に拒否されます。オペレーティング システムがこのようなパケットを自動的に拒否しない場合は、ファイアウォールを導入して、この範囲が送信元であるように装ったパケットをドロップすることができます。特に必要がない限り、類似の脆弱性を避けるため、デーモンを 127.0.0.0/8 をリッスンするように設定することは推奨されません。
脆弱性が確認されているバージョンは以下のとおりです。
ntpd 4.2.8p3、NTPsec a5fb34b9cc89b92a8fef2f459004865c93bb7f92
他のバージョンも影響を受ける可能性があります。
CVE-2016-1549 NTP Ephemeral Association Sybil Vulnerability
発見者:Cisco ASIG の Matthew Van Gundy
NTP プロトコルでは、クライアント/サーバ関係を通じて、基準クロックにより正式な時刻の値を検出する代わりに、システムが別のシステムとピアツーピアの関係を構築し、共通のシステム時刻を計算することができます。このようなピア同士の関係は、一時的にその場で作成されるものです。クライアントは、ピア関係を確立する前に、接続するピアが先ほど説明した鍵のメカニズムを用いて認証されるように要求します。
ただし、同じ鍵を共有できるピアの数に制限はありません。攻撃者が CVE-2016-1550 で説明した仕組みなどを使って鍵 ID を把握した場合、この鍵を使って悪意のあるピアを多数セットアップする可能性があります。これらの悪意のあるピアが、誤った時刻を一貫してクライアントにアドバタイジングすることで、クライアントが誤った時刻を正しい時刻として受け入れてしまう恐れがあります。また、悪意のある大量のピアが原因で、悪意のないピアが共有している正しい時刻値が埋もれてしまう可能性もあります。
脆弱性が確認されているバージョンは以下のとおりです。
ntpd 4.2.8p3、ntpd 4.2.8p4、NTPsec 3e160db8dc248a0bcb053b56a80167dc742d2b74、NTPsec a5fb34b9cc89b92a8fef2f459004865c93bb7f92
他のバージョンも影響を受ける可能性があります。
CVE-2016-1547 Demobilization of Preemptible Associations
発見者:Cisco ASIG の Stephen Gray および Matthew Van Gundy
特定の条件下では、ntpd システムのピア連携が阻害される可能性があります。これは、要求認証の試行の失敗通知に偽装されたパケットが、受信者に送信されることで起こります。認証に失敗すると crypto-NAK パケットが送信されますが、このパケット自体は認証されません。そのため攻撃者は、正当なピアが発信者であるように偽装した crypto-NAK パケットを送信して、受信者に対して連携の切断を強制できます。偽装した crypto-NAK パケットを繰り返し送信することにより、攻撃者はピア関係が再構築できないようにして Denial of Service(DoS)を発生させます。
脆弱性が確認されているバージョンは以下のとおりです。
ntpd versions 4.2.8p3、4.2.8p4、NTPSec a5fb34b9cc89b92a8fef2f459004865c93bb7f92
他のバージョンも影響を受ける可能性があります。
CVE-2016-1548 Xleave Pivot:NTP Basic Mode to Interleaved
発見者:Cisco ASIG の Jonathan Gardner と RedHat の Miroslav Lichvar(個別に発見)
NTP の仕様では、パケットの 1 つに直前のパケットの送信時のタイムスタンプを含めることができる、インターリーブ モードが許可されています。これにより、パケットの送信処理に必要な時間をきわめて正確に計算できるようになります。
攻撃者は、巧妙に細工されたパケットを送信することで、ntpd クライアントがインターリーブ モードを受け入れるように設定されていない場合であっても、このクライアントを基本的なクライアント/サーバ モードからインターリーブ モードへ強制的に切り替えることができます。この切り替えが行われてしまうと、クライアントは以前に連携していたサーバからのパケットを拒否するようになり、攻撃者はパケットをさらに送信して、クライアントの時刻を自身の選択した値に設定できます。
この脆弱性は、ntpd が受信パケットを検査する際のメカニズムに起因します。基本モードでは、要求パケットの受信時に送信される応答パケットに、開始時刻と送信時刻が同時刻に設定されたタイムスタンプが含まれます。これが当てはまらない場合、ntpd は、パケットを廃棄する前にこのパケットがインターリーブ モードであるかどうかを確認します。開始時刻のタイムスタンプが宛先のタイムスタンプと同じ(クライアントがピアからパケットを受信した最後の時刻)である場合、そのクライアントはインターリーブ モードに設定されます。この脆弱性を悪用するには、攻撃者が宛先のタイムスタンプを知る必要がありますが、その値は、ntpd のクエリ ツールを使用して入手するか、応答パケット内のデータから推論するか、もしくはブルートフォース アタックによって入手することができます。
脆弱性が確認されているバージョンは以下のとおりです。
ntpd versions 4.2.8p4、NTPSec aa48d001683e5b791a743ec9c575aaf7d867a2b0c
他のバージョンも影響を受ける可能性があります。
まとめ
ntpd は、多くのシステムにおいて、システム クロックが共通の基準に同期されていることを確保する上で不可欠な機能です。シスコは、この基本的なシステム コンポーネントから脆弱性を排除することに尽力しています。この目標に向かって、シスコの脆弱性調査チームは、関係機関とともに修正について調整したうえで責任を持ってこれらの脆弱性を公開しています。管理者は、できるだけ早くパッチを適用するか、ntpd のインストール環境をアップグレードしてください。
軽減策
お客様の保護のため、Talos はこうした脆弱性を悪用しようとする行為を検出するルールをリリースいたしました。今後、脆弱性に関する新たな情報が追加されるまでの間は、ルールが追加されたり、現行のルールが変更されたりする場合がありますのでご注意ください。最新のルールの詳細については、Firepower Management Center、FireSIGHT Management Center、または Snort.org を参照してください。
Snort ルール:36536、37841-37843
タイムライン
2016 年 2 月 11 日:ベンダーへの情報開示
2016 年 4 月 26 日:脆弱性パッチにて対応
2016 年 4 月 26 日:一般公開
本稿は 2016年4月27日に Talos Group のブログに投稿された「VULNERABILITY SPOTLIGHT: FURTHER NTPD VULNERABILITIES」の抄訳です。