この記事で記載している機能をすべて有効にするには、ExtraHop Reveal(x)の最新バージョンである8.1.3にアップグレードしてください。.
更新日:2020年8月7日
ExtraHopは、JSOFが8月5日にBlack Hatで詳細を発表したCVE-2020-11901に対する検知結果を公開しました。 公開情報では、影響を受けるデバイス上でリモートコードの実行につながる可能性のある4つのバグセットが記述されています。Treck の DNS 解析ロジックの修正において、Treck が検証したヒープオーバーフローは、以前のバージョンのソフトウェアにのみ影響を与え、CVE-2020-11901 に該当することをExtraHop脅威調査チーム は、独自に特定しました。
CVE-2020-11901 の悪用は、以下の検知方法で確認されています。
重要な脆弱性、数億台のデバイスに影響
Ripple20についてすでに把握しているかと思いますが、なぜそれが重要なのか、またお客様の環境が影響を受けているかどうかをどのように知ることができるのでしょうか?Ripple20 は、JSOF が最近発見した一連の脆弱性群で、Treck ネットワーキングスタックを使用しているデバイスに存在します。
Treck スタックは 20 年以上前から組み込み機器で使用されています。Treck ソフトウェアを使用している産業制御、ネットワーク、輸送、小売、石油・ガス、医療、その他の分野の何億ものデバイスが悪用される可能性があることがわかりました。これらの脆弱性により、攻撃者はデータを盗み出したり、コードを実行したりすることが可能になります。
残念ながら、これらのデバイスを特定することは難しく、パッチを当てることはさらに困難です。では、もしお客様の環境にTreckデバイスがある(またはあるかどうかわからない)場合はどうすればいいのでしょうか?最も安全な方法は、これらのデバイスの一部を削除するか、交換することかもしれません。
この対応策は確かに簡単な作業ではありませんし、影響を受けるデバイスの正確なインベントリが必要です。これらのデバイスのスキャンは、ネットワークとその性能に影響を与える可能性があります。また、システム内に潜む攻撃者がこれらのデバイスをスキャンしている場合はどうでしょうか?それらを検知することができるでしょうか?
当社のExtraHop脅威調査チームは、Ripple20を綿密に調査し、この脆弱性を検知するために何をする必要があるかを概説しました。その仕組みを順を追って説明します。
Ripple20の影響を受ける脆弱なデバイスの特定
脆弱性のあるデバイスを発見するのは非常に難しいことです。このプロセスを実行するために、NDRソリューションであるExtraHop Reveal(x)を使用して、ネットワーク上の通信を分析して脆弱性のあるデバイスを特定します。これは、能動的なスキャンを必要とせず、環境に影響を与えない受動的な発見方法です。
脆弱性のあるTreckソフトウェアを使用するデバイスのインベントリを作成するには、以下のようにデバイスグループを作成するだけです。(これはバージョン8.1.3で利用可能です)
まず、Assetのページに移動します。
そして、新しいデバイス・グループを作成します。
そして、Treckソフトウェアを使用するデバイス・グループを指定します。
この手順の通りデバイスグループを作成したら、Treck ソフトウェアスタックを使用するすべてのデバイスを作成したデバイスグループを使用して表示することができます。おすすめの方法については、以下を参照してください。
Ripple20 の影響を受ける脆弱なデバイスのスキャン検知
Reveal(x)は、脆弱性のあるデバイスそのものを検知することに加えて、攻撃者がこれらのデバイスをスキャンしたり、脆弱性を悪用したりした場合にも検知することができます。ネットワークの内部に侵入した攻撃者は、Ripple20の脆弱性を持つデバイスをスキャンしている可能性があります。攻撃者が脆弱性のあるデバイスをスキャンする方法は複数あります。ExtraHopでは、Treckソフトウェアを使用しているデバイスをスキャンする最も効果的な方法を検知するDetectorを用意しています。
最も確実な方法は、ICMPタイプ165(0xa5)メッセージを送信することです。
デバイスがICMP タイプ 166 (0xa6) の応答メッセージを送信した場合、そのデバイスが Treck TCP/IP スタックを実行していることが確認され、脆弱性がある可能性があります。
Ripple20 の攻撃を検知
Treck TCP/IPスタックを使用している組み込みデバイスの多くは、エージェントを実行することができず、ロギング機能も非常に限られています。つまり、セキュリティチームは、攻撃の試みを検知するためには、ネットワークデータに目を向ける必要があるということです。
Reveal(x) は、情報漏洩につながる CVE-2020-11898 とリモートコードの実行を悪用する CVE-2020-11896 の両方について検知することが可能です。これらの脆弱性は、Treck TCP/IP スタックが IP-in-IP トンネル上の IPv4 フラグメントを不適切に処理するという事実に起因しています。
CVE-2020-11898 と CVE-2020-11896 の両方とも、以下に示すように、同種のデータ切り捨て(トランケーション)に起因しています。
カプセル化されたUDPパケットは、CVE-2020-11896を悪用フローにつながります。このソフトウェアは、各フラグメントの内容を、切り捨てられたサイズの割り当てられたバッファに連結します。このサイズの不一致は、ヒープオーバーフローに悪用される可能性があります。
さらに、切り捨てではなく、実際よりも大きなパケットを作成することもできます。カプセル化されたパケットが無効なプロトコルであったり、サポートされていないプロトコルであったりした場合には、送信されたパケットに隣接していたヒープの中身と共にICMPのエラーメッセージで応答されます。これが、CVE-2020-11898で記載されているデータ漏洩となります。
CVE-2020-11898を利用した情報漏洩と CVE-2020-11896 を利用したリモートコード実行の組み合わせにより、攻撃者は Treck TCP/IP スタックを実行しているデバイス内で任意のコードを確実に実行することができます。
Reveal(x) は、実際のパケット長よりも短い長さの値を含み、断片化された IP パケットの中にカプセル化された IP パケットを送信することで、リモートでコードを実行しようとする攻撃者の活動を検知します。これらの基準に合致するパケットは、攻撃者が意図的に任意のデータを大量に含む不正なパケットを被害者に送信していることを示しています。
推奨アクション
最初のステップは、リスクのあるデバイスを特定することです。パッチを適用するか、もしもパッチが利用できない場合は、影響を受けたデバイスをリプレイスすることをお勧めします。これらのオプションのいずれも実現できない場合は、以下の手順を実行することをお勧めします。
- デバイスが公開されていないことを確認
- ローカルサブネットから分離されたネットワークセグメントへのデバイス移動
- 影響を受けるデバイス向けのすべての IP-in-IP トラフィックをドロップ
- 影響を受けるデバイス向けのすべての IPv6 トラフィックをドロップ
さらに、Reveal(x) の Treck デバイスグループに対する異常なトラフィックに特別な注意を払う必要があります。
今後の対応
Ripple20の脆弱性は、ソフトウェアの複雑なサプライチェーンにおいてデバイスやアプリケーションを保護することの難しさを浮き彫りにしています。Treckネットワークスタックの場合、20年以上にわたって使用されており、複数の業界で数億台のデバイスが使用されています。ほとんどの組織では、そのソリューションを機器ベンダーに頼ることはできないでしょうし、自分の環境に脆弱性のあるデバイスがあるかどうかを知ることさえできません。
ExtraHop Reveal(x)は、ネットワーク上のデバイスの通信を受動的に分析し、デバイスの役割、重要度、メーカーやソフトウェアなどのデバイスの詳細を特定します。ExtraHopの脅威調査チームは、常に新しい検知方法を構築し、すべてのReveal(x)の顧客に迅速に提供することによって、Ripple20のような新しい脅威に対応できるように支援しています。