INFRA:HALT NicheStackに新たな14件のセキュリティ脆弱性が発見される

INFRA_HALT

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スタックの基礎となるもので、STMicroelectronicsFreescale (NXP)、Altera (Intel)Microchip などのOEM向けに異なるバージョンが配布されました。

NicheStackプロトコルサポート

現在、NicheStackでサポートされているプロトコルです。

NicheStack Protocol Support

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*

HCCSEC-000010

DNS応答を解析するルーチンでは、個々のDNS応答の「応答データ長」フィールドをチェックしないため、OOB-R/Wが発生することがあります。 DNSv4 クライアント RCE Security Vulnerability 9.8
2021-31226 HCCSEC-000003 HTTP POSTリクエストを解析するコードに、サイズ検証が行われていないことによるヒープバッファオーバーフロー脆弱性が存在します。 HTTP サーバー RCE Security Vulnerability 9.1
2020-25767 HCCSEC-000007 DNSドメイン名を解析するルーチンでは、圧縮ポインタがパケットの境界内を指しているかどうかをチェックしないため、OOB-Rが発生します。 DNSv4 クライアント DoS

インフォリーク

Security Vulnerability - Orange 7.5
2020-25927 HCCSEC-000009 DNSレスポンスを解析するルーチンでは、パケットヘッダで指定されたクエリ/レスポンスの数が、DNSパケットで利用可能なクエリ/レスポンスデータと一致するかどうかをチェックしないため、OOB-Rが発生します。 DNSv4 クライアント DoS Security Vulnerability - Orange 8.2
2021-31227 HCCSEC-000004 HTTP POSTリクエストを解析するコードに、誤った符号付き整数の比較によるヒープバッファオーバーフロー脆弱性が存在します。 HTTP サーバー DoS Security Vulnerability - Orange 7.5
2021-31400 HCCSEC-000014 TCP帯域外緊急データ処理機能は、帯域外緊急データの終端へのポインタがTCPセグメントのデータ外を指していた場合、パニック関数を起動し、DoS(NicheStackのバージョンによっては無限ループまたは割り込みが発生)が成功する可能性があります。 TCP DoS Security Vulnerability - Orange 7.5
2021-31401 HCCSEC-000015 TCPヘッダ処理コードは、IP長(ヘッダ+データ)の長さをサニタイズしません。これは、IPパケットの長さからヘッダーの長さを引いてIPデータの長さを計算する際に、細工されたIPパケットでは整数のオーバーフローが発生します。 TCP アプリ依存 Security Vulnerability - Orange 7.5
2020-35683 HCCSEC-000011 ICMPパケットを解析するコードは、ICMPチェックサムを計算するために、(IPヘッダから抽出された)IPペイロードサイズのチェックされていない値に依存しています。IPペイロードサイズがIPヘッダーのサイズよりも小さく設定されている場合、ICMPチェックサムの計算関数が境界を越えてメモリを読む可能性があります。 ICMP DoS Security Vulnerability - Orange 7.5
2020-35684 HCCSEC-000012 TCPパケットを解析するコードは、TCPチェックサム計算関数内でTCPペイロードの長さを計算するために、(IPヘッダから抽出された)IPペイロードサイズのチェックされていない値に依存しています。IPペイロードサイズがIPヘッダのサイズよりも小さく設定されている場合、TCPチェックサム計算関数が境界を越えてメモリを読み込む可能性があります。影響の少ないライトアウトオブバウンズの可能もあります。 TCP DoS Security Vulnerability - Orange 7.5
2020-35685 HCCSEC-000013 TCPのISNは予測可能な方法で生成されます。 TCP TCP スプーフィング Security Vulnerability - Orange 7.5
2020-27565 HCCSEC-000017 未知のHTTPリクエストを受信すると、パニックが発生します。 HTTP DoS Security Vulnerability - Orange 7.5
2021-36762 HCCSEC-000016 TFTPパケット処理関数は、ファイル名がヌル終端であることを保証していないため、ファイルについてstrlen()を呼び出すと、プロトコルパケットバッファの境界を超えてメモリが読み込まれる可能性があります。 TFTP DoS Security Vulnerability - Orange 7.5
2020-25926 HCCSEC-000005

HCCSEC-000008

DNSクライアントは、十分にランダムなトランザクションIDを設定しません。 DNSv4 クライアント DNS キャッシュポイズニング Security Vulnerability - Orange 4
2021-31228 HCCSEC-000006 攻撃者は、DNSクエリのソースポートを予測して、DNSクライアントの要求に対する有効な回答として受け入れられるような偽のDNS応答パケットを送信することができます。 DNSv4 クライアント DNS キャッシュポイズニング Security Vulnerability - Orange 4

CVSSスコア 色分けされています。

  • Security Vulnerability - Orange – 中または高
  • Security Vulnerability – クリティカル

緩和策の推奨事項

NicheStackのセキュリティ問題を完全に解決するためには、NicheStack v4.3にアップグレードすることが最善の方法です。

それができない場合は、脆弱性を緩和するためのいくつかの実用的な方法をご紹介します。

  1. NicheStackを実行しているデバイスを検出するために、Forescout Research Labs 提供の オープンソースのスクリプト を実行します。このスクリプトは、最新の開発状況をフォローするために、新しいシグネチャで常に更新されています。
  2. パッチが適用されるまで、脆弱なデバイスを他のネットワークから隔離し、セグメント化する。以下のリストに基づいて対策を講じる。
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パケットをブロックする。

 

  1. デバイスベンダーがリリースしたパッチを監視し、完全な修復が完了するまでの間、ビジネスを継続するための計画を作成する。なお、InterNiche Technologies社を買収したHCC Embedded がリリースしたパッチについては、ご要望に応じて提供されます。 
  2. これらの脆弱性やその他の脆弱性を利用しようとする悪意のあるパケットに注意してください。

次のステップ

私たちは、影響を受けたベンダーと透明性のある方法で協力することを意図しています。ベンダーが影響を受けた製品を特定し、コミュニティに向けた勧告を作成するのを支援することを目指しています。JFrogとForescoutによる調査の詳細なテクニカルレポートは、 こちらをご覧ください。

JFrogとForescoutの研究チームは、8月19日に共同でウェビナー(英語のみ)を開催し、今回の脆弱性の詳細、発見の経緯、対策方法について説明します。詳細および登録はこちらをご覧ください。

JFrogとForescoutは、8月下旬に開催されるHack In The Box (HITB) Singapore でも、今回の情報開示に関する講演を行います。

セキュアなソフトウェアをエッジに提供することについての詳細、およびJFrog DevOps Platformのセキュリティ機能の最新情報についてはこちらをご覧ください。