open62541に整数オーバーフロー、1.5.7で修正済み
OPC UAの実装ライブラリopen62541の1.5.0以上1.5.7未満に、接続先サーバーが送る型定義を処理する際のメモリ破壊の弱点が見つかりました。悪意あるOPC UAサーバーにクライアントとして接続すると、クライアントが異常終了したり、任意のコードを実行されたりするおそれがあります。該当する版を使うクライアント側の製品は、1.5.7への更新と、接続先サーバーの見直しを進めてください。
急ぎ度: 早めに
実際の攻撃での悪用は確認されておらず、悪用には細工したサーバーへの接続が必要ですが、成功すればコード実行に至るおそれがあり、修正版も出ているためです。
関係があるか
open62541 1.5.0以上1.5.7未満を組み込んだOPC UAクライアントが対象です。工場やプラントの監視・データ収集の製品や自社開発ツールで、外部のOPC UAサーバーへ接続し、型定義の取得機能を使っている環境が当てはまります。
| 製品 | 影響を受ける版 | 直った版 |
|---|---|---|
| open62541 | >= 1.5.0, < 1.5.7 | 1.5.7 |
確かめ方
- 1自社開発のソフトウェアや社内ツールがopen62541を使っているか、ビルド設定、依存関係の一覧、ソースの取り込み状況から確認します。
- 2使っている場合は版が1.5.0以上1.5.7未満かを確認します。1.5.0より前の版は、公表されている影響範囲に含まれていません。
- 3クライアントとして他のOPC UAサーバーに接続し、
UA_Client_getRemoteDataTypes()を呼び出しているかをソースコードで確認します。 - 4市販の製品や機器に組み込まれている場合は、自社では版を確認できないことが多いため、製品ベンダーにopen62541の利用有無と対応状況を問い合わせます。
何が起きたか
open62541は、産業機器の通信規格であるOPC UAを実装したオープンソースのライブラリです。この製品の1.5.0以上1.5.7未満に、接続先のサーバーから受け取るデータの型の定義を処理する部分で、数値の計算が桁あふれを起こす弱点が見つかりました。桁あふれによって必要なメモリの大きさが実際より小さく見積もられ、その後のデータ処理で確保した領域を超えて書き込みが起こります。
技術的には、UA_DataType_fromStructureDescription() が大きな独自構造体の定義を扱う際に、16ビットの memSize フィールドが一周してしまう整数オーバーフロー(CWE-190)です。サーバーが UA_Client_getRemoteDataTypes() を通じて細工したDataType定義を返すと、decodeBinaryStructure() がヒープ上で領域を超えて書き込みます。
結果として、クライアントが異常終了する場合があるほか、条件が整えば任意のコードを実行される可能性があると説明されています。サーバー側ではなく、サーバーへ接続するクライアント側が狙われる点が特徴です。開発元は版1.5.7で修正しており、対応する修正はGitHub上のコミットとプルリクエストで公開されています。
攻撃の流れ
-
1
細工サーバー用意
攻撃者が、巨大な独自構造体の型定義を返す悪意あるOPC UAサーバーを用意するか、既存のサーバーを乗っ取ります。
-
2
クライアント接続
脆弱な版を使うクライアントが、そのサーバーに接続して型定義の取得機能を呼び出します。
-
3
サイズ計算の破綻
型定義の処理で16ビットのサイズ値が桁あふれし、必要な領域が小さく見積もられます。
-
4
ヒープ破壊
データの復号時に確保した領域を超えて書き込みが起こります。
-
5
停止または乗っ取り
クライアントが異常終了するか、条件次第で任意のコードが実行されます。
どう悪用されるか
悪用には、被害を受けるクライアントが悪意あるOPC UAサーバーに接続することが前提です。攻撃者側に認証は要らず、利用者の操作も不要とされています。ネットワーク経由で攻撃でき、CVSS v3.1では攻撃の成功に条件が必要(AC:H)と評価されています。CVSS v4.0の評価では攻撃の複雑さは低(AC:L)とされ、攻撃の前提条件(AT:P)が付いています。
悪用された場合、クライアントのプロセスが落ちて監視やデータ収集が止まるおそれがあります。さらにコード実行まで至ると、クライアントが動く端末や機器の権限で情報の読み取りや改ざん、処理の停止が起こり得ます。機密性、完全性、可用性のいずれも影響は高と評価されています。
なお、KEV(実際の攻撃での悪用が確認された脆弱性の一覧)への掲載や、悪用される見込みを示すEPSSの値は、今回の情報には含まれていません。現時点で実際の攻撃が確認されているとは言えない状況です。
今すぐやること
-
1
利用箇所を洗い出す
自社開発のソフトウェアや社内ツール、委託先の成果物でopen62541を使っているものを一覧にし、版を確認します。クライアントとして外部サーバーへ接続する用途を優先します。
-
2
1.5.7以降へ更新する
該当する場合はopen62541を1.5.7に更新し、再ビルドして配布します。組み込み機器では、更新の反映までライブラリを同梱している製品側の対応が必要です。公式のリリースノートで内容を確認してください。
-
3
接続先サーバーを確認する
クライアントが接続しているOPC UAサーバーを洗い出し、信頼できる相手に限られているかを確認します。想定外のサーバーや外部のサーバーへの接続設定がないかも見ます。
-
4
製品ベンダーに確認する
市販の製品がopen62541を組み込んでいる可能性がある場合は、影響の有無と修正版の提供時期をベンダーに問い合わせ、告知を定期的に確認します。
-
5
通信経路を制限する
更新までの間、クライアントから接続できるサーバーをファイアウォールなどで必要なものだけに絞ります。OT系ネットワークと外部ネットワークの分離も見直します。
すぐ更新できないとき
公表されている情報では、修正版への更新以外の恒久的な回避策は示されていません。更新までの間は、クライアントが接続するOPC UAサーバーを信頼できるものだけに限定し、ネットワークで接続先を制限して、型定義を取得する機能を使わない運用に切り替えられるか検討してください。
背景
OPC UAは、工場の設備、制御システム、監視ソフト、上位の情報システムをつなぐ通信規格として広く使われています。open62541はその規格をC言語で実装したオープンソースのライブラリで、機器のファームウェアや産業用ソフトウェアに組み込まれることがあります。そのため、利用者が自分では気づかないうちに製品の内部で使われている場合があります。
数値の桁あふれによってメモリの確保量を誤り、領域外への書き込みに至る弱点は、C言語などで書かれたソフトウェアで繰り返し問題になってきた種類のものです。今回のように、通常は信頼されがちな通信相手から届くデータを処理する部分で起きると、クライアント側が攻撃を受ける経路になります。サーバーだけでなくクライアント側の更新も計画に含めることが大切です。
よくある質問
Q.OPC UAサーバーとして使っているだけなら影響はありますか。
Q.1.5.0より前の版は安全ですか。
Q.すでに攻撃は行われていますか。
まだ分かっていないこと
- 実際の攻撃での悪用が確認されているか、また悪用される見込みの評価は、現時点で明らかになっていません。
- open62541を組み込んだ市販製品のうち、どの製品が影響を受けるかは公表されていません。各ベンダーの告知を確認する必要があります。
- コード実行が現実にどの程度成立しやすいかは公表されていません。
この記事は、取得元の公開情報をもとに生成 AI で作成しています。誤りを含むことがあります。対応を決める前に、下の原文と参照先を確認してください。
影響パッケージ
| 種類 | パッケージ | 影響を受ける版 | 直った版 |
|---|---|---|---|
| open62541 | open62541 |
1.5.0 以上 1.5.7 未満 |
1.5.7 |
ディストリビューション別の修正状況
各ディストリビューションが公開している、この CVE の修正パッケージ
- Debian DEBIAN-CVE-2026-116014 open62541
原文の説明 取得元が公開している説明をそのまま載せています (多くは英語)。
open62541 1.5.0 before 1.5.7 contains an integer overflow in UA_DataType_fromStructureDescription() that wraps the 16-bit memSize field for large custom structure definitions. A malicious OPC UA server can supply DataType definitions via UA_Client_getRemoteDataTypes(), causing decodeBinaryStructure() to overflow the heap, crashing clients or enabling code execution.
出典: CVE.org (CVE Program・cvelistV5) NVD GitHub Advisory
参照URL
- advisory nvd.nist.gov
- advisory github.com
- package github.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web disclosure@vulncheck.com
- web github.com