数百万の制御システムに影響も、組み込みTCP/IPスタック「NicheStack」に脆弱性IoTセキュリティ

JFrogのセキュリティリサーチチームとForescout Research Labsは、制御システムに広く利用されているTCP/IPネットワークスタック「NicheStack」に14件の脆弱性を発見したと発表。リモートでのコード実行、サービス拒否、情報漏えい、TCPスプーフィング、DNSキャッシュポイズニングなどのサイバー攻撃につながる可能性がある。

» 2021年08月05日 08時00分 公開
[朴尚洙MONOist]

 JFrogのセキュリティリサーチチーム(旧Vdoo)とForescout Research Labsは2021年8月3日(現地時間)、工場や発電所、水処理プラントなどの制御システムに広く利用されているTCP/IPネットワークスタック「NicheStack」に14件の脆弱性を発見したと発表した。これらの脆弱性により、NicheStackを搭載する機器において、リモートでのコード実行、サービス拒否、情報漏えい、TCPコネクションを横取りするTCPスプーフィング、フィッシングや送信された電子メールの窃盗にもつながるDNS(Domain Name System)キャッシュポイズニングなどのサイバー攻撃につながる可能性がある。

「NicheStack」で発見された14件の脆弱性は「INFRA:HALT」と名付けられた 「NicheStack」で発見された14件の脆弱性は「INFRA:HALT」と名付けられた(クリックで拡大) 出典:JFrog
「NicheStack」がサポートするプロトコル 「NicheStack」がサポートするプロトコル(クリックで拡大) 出典:JFrog

 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が提供するオープンソースのスクリプトを活用できる。

⇒その他の「IoTセキュリティ」の記事はこちら

Copyright © ITmedia, Inc. All Rights Reserved.