INFRA:HALT NicheStackに新たな14件のセキュリティ脆弱性が発見される
NicheStack は、製造工場、発電・送電・配電、水処理などの重要なインフラを含む、世界中の何百万ものオペレーショナルテクノロジー(OT)機器で一般的に使用されている TCP/IPネットワークスタックです。
JFrogのセキュリティリサーチチーム(旧Vdoo)は、 Forescout Research Labs, と共同で、NicheStack TCP/IPスタックに影響を与える14の新しいセキュリティ脆弱性を発見しました。これらの脆弱性により、リモートでのコード実行、サービス拒否、情報漏洩、TCPスプーフィング、DNSキャッシュポイズニングが可能になります。
このブログ記事では、INFRA:HALTと名付けられたこれら14件の脆弱性の詳細と、それらを緩和するための推奨事項をご紹介します。
NicheStackとは?
NicheStackは、1996年にInterNiche Technologies社により開発された、一般的に使用されている、組み込みシステム用の独自のTCP/IPスタックです。2003年には、IPv6に対応しました。
NicheStackは、他のTCP/IPスタックの基礎となるもので、STMicroelectronics、Freescale (NXP)、Altera (Intel)、Microchip などのOEM向けに異なるバージョンが配布されました。
NicheStackプロトコルサポート
現在、NicheStackでサポートされているプロトコルです。
NicheStackディストリビューション
NicheStackは、世界中のOT機器でよく使われています。例えば、PLC市場で最大のシェアを誇るSiemens S7 PLCに採用されています。また、当社の調査によると、産業用オートメーションのトップ企業を含む約200社のデバイスベンダーで使用されており、Shodan の検索結果では6,400デバイスのインスタンスでNicheStackを実行していることがわかりました。
新しい14件の NicheStack セキュリティ脆弱性
NicheStackの2つのバージョンを解析しました。バージョン4.0.1のバイナリサンプル(従来のInterNicheのウェブサイトで公開されています)とバージョン3のソースコード(組み込みプロジェクトのソースファイルを公開しているウェブサイトにあります)です。バイナリ版は、JFrogが静的および動的な独自技術を使用して手動および自動で分析しました。
以下の表は、新たに発見された14件の脆弱性すべての詳細です。NicheLiteを含む、最新のバージョン4.3以前のすべてのNicheStackのバージョンが影響を受けます。
CVE ID | ベンダー ID | 説明 | 影響を受けるコンポーネント | 潜在的な影響 | CVSSv3.1 スコア | |
2020-25928 | HCCSEC-000002* | DNS応答を解析するルーチンでは、個々のDNS応答の「応答データ長」フィールドをチェックしないため、OOB-R/Wが発生することがあります。 | DNSv4 クライアント | RCE | 9.8 | |
2021-31226 | HCCSEC-000003 | HTTP POSTリクエストを解析するコードに、サイズ検証が行われていないことによるヒープバッファオーバーフロー脆弱性が存在します。 | HTTP サーバー | RCE | 9.1 | |
2020-25767 | HCCSEC-000007 | DNSドメイン名を解析するルーチンでは、圧縮ポインタがパケットの境界内を指しているかどうかをチェックしないため、OOB-Rが発生します。 | DNSv4 クライアント | DoS
インフォリーク |
7.5 | |
2020-25927 | HCCSEC-000009 | DNSレスポンスを解析するルーチンでは、パケットヘッダで指定されたクエリ/レスポンスの数が、DNSパケットで利用可能なクエリ/レスポンスデータと一致するかどうかをチェックしないため、OOB-Rが発生します。 | DNSv4 クライアント | DoS | 8.2 | |
2021-31227 | HCCSEC-000004 | HTTP POSTリクエストを解析するコードに、誤った符号付き整数の比較によるヒープバッファオーバーフロー脆弱性が存在します。 | HTTP サーバー | DoS | 7.5 | |
2021-31400 | HCCSEC-000014 | TCP帯域外緊急データ処理機能は、帯域外緊急データの終端へのポインタがTCPセグメントのデータ外を指していた場合、パニック関数を起動し、DoS(NicheStackのバージョンによっては無限ループまたは割り込みが発生)が成功する可能性があります。 | TCP | DoS | 7.5 | |
2021-31401 | HCCSEC-000015 | TCPヘッダ処理コードは、IP長(ヘッダ+データ)の長さをサニタイズしません。これは、IPパケットの長さからヘッダーの長さを引いてIPデータの長さを計算する際に、細工されたIPパケットでは整数のオーバーフローが発生します。 | TCP | アプリ依存 | 7.5 | |
2020-35683 | HCCSEC-000011 | ICMPパケットを解析するコードは、ICMPチェックサムを計算するために、(IPヘッダから抽出された)IPペイロードサイズのチェックされていない値に依存しています。IPペイロードサイズがIPヘッダーのサイズよりも小さく設定されている場合、ICMPチェックサムの計算関数が境界を越えてメモリを読む可能性があります。 | ICMP | DoS | 7.5 | |
2020-35684 | HCCSEC-000012 | TCPパケットを解析するコードは、TCPチェックサム計算関数内でTCPペイロードの長さを計算するために、(IPヘッダから抽出された)IPペイロードサイズのチェックされていない値に依存しています。IPペイロードサイズがIPヘッダのサイズよりも小さく設定されている場合、TCPチェックサム計算関数が境界を越えてメモリを読み込む可能性があります。影響の少ないライトアウトオブバウンズの可能もあります。 | TCP | DoS | 7.5 | |
2020-35685 | HCCSEC-000013 | TCPのISNは予測可能な方法で生成されます。 | TCP | TCP スプーフィング | 7.5 | |
2020-27565 | HCCSEC-000017 | 未知のHTTPリクエストを受信すると、パニックが発生します。 | HTTP | DoS | 7.5 | |
2021-36762 | HCCSEC-000016 | TFTPパケット処理関数は、ファイル名がヌル終端であることを保証していないため、ファイルについてstrlen()を呼び出すと、プロトコルパケットバッファの境界を超えてメモリが読み込まれる可能性があります。 | TFTP | DoS | 7.5 | |
2020-25926 | HCCSEC-000005 | DNSクライアントは、十分にランダムなトランザクションIDを設定しません。 | DNSv4 クライアント | DNS キャッシュポイズニング | 4 | |
2021-31228 | HCCSEC-000006 | 攻撃者は、DNSクエリのソースポートを予測して、DNSクライアントの要求に対する有効な回答として受け入れられるような偽のDNS応答パケットを送信することができます。 | DNSv4 クライアント | DNS キャッシュポイズニング | 4 |
CVSSスコア 色分けされています。
- – 中または高
- – クリティカル
緩和策の推奨事項
NicheStackのセキュリティ問題を完全に解決するためには、NicheStack v4.3にアップグレードすることが最善の方法です。
それができない場合は、脆弱性を緩和するためのいくつかの実用的な方法をご紹介します。
- NicheStackを実行しているデバイスを検出するために、Forescout Research Labs 提供の オープンソースのスクリプト を実行します。このスクリプトは、最新の開発状況をフォローするために、新しいシグネチャで常に更新されています。
- パッチが適用されるまで、脆弱なデバイスを他のネットワークから隔離し、セグメント化する。以下のリストに基づいて対策を講じる。
CVE ID | 影響を受けるコンポーネント | 緩和策の推奨 |
2020-25928 2020-25767 2020-25927 2021-31228 2020-25926 |
DNSv4 クライアント | 必要のない場合は、DNSv4クライアントを無効にするか、DNSv4トラフィックをブロックする。 DNSスプーフィング攻撃を容易にするいくつかの脆弱性があるため、内部のDNSサーバーを使用しても十分ではない場合があります(攻撃者はリクエストとレスポンスのマッチングをハイジャックできる可能性があります)。 |
2021-31226 2021-31227 |
HTTP サーバー | 不要な場合はHTTPサーバーを無効にしたり、HTTP接続をホワイトリストに登録したりすることができます。 |
2021-31400 2021-31401 2020-35684 2020-35685 |
TCP | CVE-2021-31400、CVE-2021-31401、CVE-2020-35684については、トラフィックを監視して不正なIPv4/TCPパケットをブロックすることをお勧めします。例えば、脆弱性のあるデバイスを適切に設定されたファイアウォールの内側に置くことで十分です。CVE-2020-35685については、可能な限り、Forescoutの NUMBER:JACK レポートで説明した推奨事項を使用することをお勧めします。 |
2020-35683 | ICMPv4 | トラフィックを監視し、不正なICMPv4パケットをブロックする。 |
- デバイスベンダーがリリースしたパッチを監視し、完全な修復が完了するまでの間、ビジネスを継続するための計画を作成する。なお、InterNiche Technologies社を買収したHCC Embedded がリリースしたパッチについては、ご要望に応じて提供されます。
- これらの脆弱性やその他の脆弱性を利用しようとする悪意のあるパケットに注意してください。
次のステップ
私たちは、影響を受けたベンダーと透明性のある方法で協力することを意図しています。ベンダーが影響を受けた製品を特定し、コミュニティに向けた勧告を作成するのを支援することを目指しています。JFrogとForescoutによる調査の詳細なテクニカルレポートは、 こちらをご覧ください。
JFrogとForescoutの研究チームは、8月19日に共同でウェビナー(英語のみ)を開催し、今回の脆弱性の詳細、発見の経緯、対策方法について説明します。詳細および登録はこちらをご覧ください。
JFrogとForescoutは、8月下旬に開催されるHack In The Box (HITB) Singapore でも、今回の情報開示に関する講演を行います。
セキュアなソフトウェアをエッジに提供することについての詳細、およびJFrog DevOps Platformのセキュリティ機能の最新情報についてはこちらをご覧ください。