JFrogのセキュリティリサーチチームとForescout Research Labsは、制御システムに広く利用されているTCP/IPネットワークスタック「NicheStack」に14件の脆弱性を発見したと発表。リモートでのコード実行、サービス拒否、情報漏えい、TCPスプーフィング、DNSキャッシュポイズニングなどのサイバー攻撃につながる可能性がある。
JFrogのセキュリティリサーチチーム(旧Vdoo)とForescout Research Labsは2021年8月3日(現地時間)、工場や発電所、水処理プラントなどの制御システムに広く利用されているTCP/IPネットワークスタック「NicheStack」に14件の脆弱性を発見したと発表した。これらの脆弱性により、NicheStackを搭載する機器において、リモートでのコード実行、サービス拒否、情報漏えい、TCPコネクションを横取りするTCPスプーフィング、フィッシングや送信された電子メールの窃盗にもつながるDNS(Domain Name System)キャッシュポイズニングなどのサイバー攻撃につながる可能性がある。
NicheStackは、1996年に米国InterNiche Technologies社により開発された組み込みシステム用のTCP/IPスタックである。2003年にはIPv6に対応するなどアップデートを続けていたが、2016年8月にハンガリーのHCC-Embeddedに買収された。NicheStackは、STマイクロ(STMicroelectronics)、フリースケール(Freescale Semiconductor)、アルテラ(Altera)、マイクロチップ(Microchip Technologies)といった海外半導体ベンダーの制御デバイス製品向けに、各社の仕様に合わせて異なるバージョンが配布された。
NicheStackを搭載するこれらのデバイスは工場などで用いられるOT(制御技術)機器に組み込まれており、例えばシーメンス(Siemens)の汎用PLCである「Siemens S7 PLC」もNicheStackを利用している。JFrogの調査によれば、産業用オートメーションのトップ企業を含む約200社のベンダーがNicheStackを使用しているという。また、IoT(モノのインターネット)機器検索エンジンとして知られる「Shodan」の検索結果では、約6400デバイスのインスタンスでNicheStackが実行されていることが分かった。
今回発見した14件の脆弱性は、重要な社会インフラを停止させ得ることから「INFRA:HALT」と名付けられた。JFrogとForescout Research Labsが、NicheStackのバージョン4.0.1のバイナリサンプルとバージョン3のソースコードを解析して発見した。14件のうち、脆弱性の深刻度を示すCVSSスコアが10〜9で「緊急」に位置付けられる脆弱性2件が含まれており、早急な対処が必要だ(表1)。
CVE ID | ベンダー ID | 説明 | 影響を受けるコンポーネント | 潜在的な影響 | CVSSv3.1 スコア |
---|---|---|---|---|---|
2020-25928 | HCCSEC-000002* HCCSEC-000010 |
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 HCCSEC-000008 |
DNSクライアントは、十分にランダムなトランザクションIDを設定しない | DNSv4 クライアント | DNS キャッシュポイズニング | 4 |
2021-31228 | HCCSEC-000006 | 攻撃者は、DNSクエリのソースポートを予測して、DNSクライアントの要求に対する有効な回答として受け入れられるような偽のDNS応答パケットを送信することができる | DNSv4 クライアント | DNS キャッシュポイズニング | 4 |
表1 「INFRA:HALT」の14件の脆弱性 出典:JFrog |
INFRA:HALTへの対策としては、NicheStackの最新版であるNicheStackのバージョン4.3にアップグレードすることが最善の方法となる。ただし、デバイスメーカーからのパッチが提供されていないなどの場合には、NicheStackを実行しているデバイスを検出するとともに、他のネットワークから隔離する必要がある。なお、NicheStackデバイスの検出には、Forescout Research Labsが提供するオープンソースのスクリプトを活用できる。
Copyright © ITmedia, Inc. All Rights Reserved.