BlackNurse について知っておくべきこと

ここ数日 BlackNurse に関する質問が続々と届いているので、本日は一挙にお答えしようと思います。

BlackNurse 攻撃とは

BlackNurse は実際には「攻撃」ではありません。

ルーター上のネットワークポートに不要なパケットを大量に送り付けることで、無意味で余分な処理を強制的にルーターに実行させる BlackNurse は、「攻撃」の一種というよりも、DDoS 攻撃の仕組みそのものです。

余分な処理が実行されると、正規ユーザーにとってはルーターのパフォーマンスが低下し、その結果正規のトラフィックが渋滞を起こします。

よっては、その悪意のあるトラフィックを削除するためにさらに多くの余分な処理を行ってしまう可能性があります。

そうなった場合、ルーターの負担は一層大きくなります。

BlackNurse の余剰トラフィックの実体は、ICMP (Internet Control Message Protocol: インターネット制御通知プロトコル) 応答と呼ばれる特殊なネットワークパケットです。

BlackNurse の仕組み

BlackNurse は、偽の制御メッセージパケットを標的のファイアウォールまたはルーターに送信します。

一般に使用される ICMP メッセージにはさまざまな種類があり、その種類はパケットに含まれる 2 つのバイトサイズのデータ値 (TypeCode) で次のように表されます。

  • ECHO REQUEST (Type 8 Code 0): エコー要求。別のコンピュータがオンラインかどうかを確認するための ping コマンドが使用された場合に送信されます。
  • ECHO REPLY (Type 0 Code 0): エコー応答。ping によって存在確認をした対象のコンピュータから送信されます。
  • TIME EXCEEDED (Type 11 Code 0): 時間超過。時間内に接続が確立されませんでした。
  • HOST UNREACHABLE (Type 3 Code 1): ホストに到達不能。存在しないサーバーに接続しようとしています。
  • PORT UNREACHABLE (Type 3 Code 3): ポートに到達不能。サーバーは存在していますが、接続先のサービスが実行されていません。

Type 3 Code 3 の ICMP エラーの例は、DNS サーバーではないコンピュータに要求を送信して、sophos.com などのドメイン名をルックアップしようとした場合に発生します。

具体的には、ユーザーのコンピュータは UDP 要求を DNS サーバーのポート 53 に送信しますが、当該のサーバーはポート 53 では要求を処理しません。そのため、DNS 応答が返ってくることはありません (サーバーを PBX (構内電話交換機)、ポートを内線電話だと考えると理解しやすくなります)。

IT チームがトラブルシューティングできるよう、サーバーは ICMP を使用して PORT UNREACHABLE メッセージを送信します。

ネットワークが ICMP メッセージを受け取るように設定されているのであれば、どのような問題が発生したのかが ICMP メッセージから推測することができます。先ほどの PBX の例えで説明すると、電話交換台までは到達したのに内線番号 53 が存在しない状態と同じです。

一部のファイアウォールでは PORT UNREACHABLE メッセージが原因で問題が発生することを、BlackNurse の作成者は発見しました。

PORT UNREACHABLE メッセージが問題になる理由

PORT UNREACHABLE メッセージだけが問題を発生させるという事実以外、詳しいことは分かっていません。

重要なのは、ファイアウォールがユーザーの知らないところで特定のパケットを廃棄していたとしても、廃棄するかどうかを判断するには一時的にせよパケットを確認する必要がある、という点です。

BlackNurse の「攻撃」を実行するには、毎秒約 5 万個のパケット (1 時間あたり 1 億 8 千万個のパケット) が必要です。

これだけの量のパケットが送信されれば、中規模のルーターは過負荷の状態になります。

最も基本的な DoS 攻撃さえも多くの国では違法とされています。あるネットワークのサービスを正規の目的で使用するつもりがないにもかかわらず、毎時1 億 8 千万個ものパケットの処理をそのネットワークに強制させるのは、故意に害を与える行為以外の何ものでもありません。

しかし、一部のファイアウォールでは他のパケットタイプに比べて Type 3 Code 3 のパケットを処理する負荷が大きく、(単に処理速度が低下するのではなく) 応答しなくなることが、BlackNurse の作成者によって発見されました。

それだけのこと?

はい、それだけのことです。

大部分のルーターで処理速度が低下する量の悪意のあるトラフィックを送り付けると、一部のルーターではそれ以上の問題が発生します。

ファイアウォールへの影響が心配になった管理者の方々へ

これまでに推奨された対策の中で、簡単に実装できるものの 1 つが、インターネット経由で受信するすべての ICMP パケットをドロップするという方法です。

確かに効果のある方法ですが、対策を施す前よりも問題が悪化する可能性があります。

たとえば、社内ネットワーク上のユーザーが ping コマンドを使用して、あるサーバーが稼働しているかどうかを確認しようとしても、応答は返ってきません。

(上記のリストからも分かるように、ping の実行には Type 8 Code 0 の ICMP 要求の送信と、それに対応した Type 0 Code 0 の ICMP 応答の受信が必須です。)

自社のファイアウォールが BlackNurse の影響を受けるタイプのものだと思われる場合には、ICMP の Type 3 Code 3 パケットのみをブロックするルールを追加することが推奨されます (最小限の変更で望ましい結果が得られる方法です)。

BlackNurse の作成者によれば、Linux ベースで、パケットの処理に iptables と呼ばれるコンポーネントが使用されているファイアウォールは影響を受けません

ソフォスのファイアウォール製品 Sophos UTM および Sophos XGiptables を使用しています。

また、ソフォス製品には Linux 接続追跡機能が搭載されており、送信されていない要求に対する不正な ICMP 応答を検出します。したがって、BlackNurse のパケットは確実に検出され、廃棄されます。

テストを実施した結果、どちらのソフォス製品にもこの「攻撃」に対する脆弱性は存在していませんでした。これは、iptables を使用している製品は影響を受けないことを裏付ける結果です。

BlackNurse と呼ばれる理由

BlackNurse は、ソフォスが BWAIN (Bug With An Impressive Name: 印象的な名前を持つバグ) と呼ぶものの 1 つに数えられます。

BWAIN のバグは世界中から注目を集めているセキュリティ上の問題ですが、その理由は必ずしも深刻だからでも特に重要性が高いからでもなく、キャッチーな名前が付けられたりロゴが作成されたりしたからです。

そうした名前の中には、ウィットに富んでいるものもあれば、名は体を表すものもあります。

たとえば Heartbleed は、TLS heartbeat コマンドを使用すると大量のデータを流出させてしまうバグでした。一方、LOGJAM は偽のメッセージをネットワークトラフィックに送り付けることで、離散対数に基づいた暗号化アルゴリズムを攻撃する問題でした。

では BlackNurse の意味は、と問われても分かりません。

Black は不穏な感じを表し、Nurse は不正なメッセージが漠然とですがネットワークの状態 (ヘルス) と関係があるために付けられたのではないか、と考えられます。