【活用ガイド】

[English]

JVNDB-2023-001534

FINS プロトコルにおけるセキュリティ上の問題について

概要

FINS プロトコルは、オムロン社製 PLC や PC ソフトウェアなど、FA ネットワークや FA 制御システムの制御をコマンド・レスポンス方式にて行う通信プロトコルです。FINS コマンドには、次のような機能があり、それらのコマンドを使って対象機器からの情報の読み書き、各種操作、設定をすることができます。機種により、サポートされている FINS コマンドは異なります。

 * I/O メモリエリアの読み出し/書き込み
 * パラメータエリアの読み出し/書き込み
 * プログラムエリアの読み出し/書き込み
 * 動作モード変更
 * 機器構成の読み出し
 * CPU ユニットのステータスの読み出し
 * 時間情報のアクセス
 * メッセージの読み出し/解除
 * アクセス権の獲得・開放
 * 異常履歴の読み出しなど
 * ファイル操作
 * 強制セット/リセット

FINS コマンドのメッセージは「FINS ヘッダ」「FINS コマンドコード」「パラメータ」の3つから構成されています。FINS コマンドメッセージを受信した制御機器/ソフトウェアは、「FINS コマンドコード」に対応する処理を実行し、その処理結果をFINSレスポンスメッセージとして「FINSヘッダ」にある送信元へ返信します。FINS のプロトコル設計では、FAネットワークは工場やライン・装置に閉じたローカルネットワークであることを前提としています。そのため FINS メッセージの暗号化や検証、認証などの機能は定義されていません。FINS プロトコルに対して、次に示すような問題が指摘されています。

1. 平文通信
FINS プロトコルでは暗号化通信を定義していません。通信経路上の FINS メッセージは平文で送受信されるため、傍受することで容易に内容を読み取ることが可能です。また、FINS メッセージの改ざんを検知する機能も定義されていません。
 * 機微な情報の平文通信(CWE-319)
 * データの信頼性についての不十分な検証(CWE-345)

2. 認証不要
FINS プロトコルでは認証処理を定義していません。よって、悪意ある通信相手からの攻撃であることを識別することはできません。

 * なりすましによる認証回避 (CWE-290)
 * Capture-replay 攻撃による認証回避 (CWE-294)
 * 重要な機能に対する認証の欠如 (CWE-306)
 * データの信頼性についての不十分な検証(CWE-345)
 * サービス運用妨害 (DoS) の脆弱性 (CWE-400)
 * 外部からの操作制限不備 (CWE-412)
 * インタラクション頻度の不適切な制限 (CWE-799)

本文書はオムロンおよびJPCERT/CCが共同で執筆しました。
CVSS による深刻度 (CVSS とは?)

影響を受けるシステム

FINS コマンドが実装されているオムロン社製品としては、次のような製品が挙げられます。

オムロン株式会社
  • SYSMAC CJ シリーズ CPU ユニット 全バージョン
  • SYSMAC CP シリーズ CPU ユニット 全バージョン
  • SYSMAC CS シリーズ CPU ユニット 全バージョン
  • SYSMAC NJ シリーズ CPU ユニット 全バージョン
  • SYSMAC NX102 シリーズ CPU ユニット 全バージョン
  • SYSMAC NX1P シリーズ CPU ユニット 全バージョン
  • SYSMAC NX7 データベース接続 CPU ユニット 全バージョン

想定される影響

FINS メッセージを傍受された場合、その内容を読み取られる可能性があります。また、不正な FINS メッセージを注入された場合、想定外の制御コマンドを実行されたり、デバイス内の情報にアクセスされたりする可能性があります。
対策

オムロン社によれば、現在のプロトコル仕様を改訂する予定はないとのことです。FINS プロトコルを実装した製品の利用者は、[詳細情報]や[想定される影響]に記載された内容を踏まえ、製品を使用する環境を適切に保護してください。FINS の悪用リスクを最小限に抑えるため、以下の対策が推奨されています。

1. FINS を使用しない(FINS を無効化する)
FINS を使用していない FA ネットワークの場合、FINS プロトコルの機能を無効化してください。以下の機種では、FINS を無効化することができます。

 * SYSMAC NJ シリーズ CPU ユニット (Ver.1.49 以降)
 * SYSMAC NX1P シリーズ CPU ユニット (Ver.1.49 以降)
 * SYSMAC NX102 シリーズ CPU ユニット (Ver.1.49 以降)
 * SYSMAC NX7 データベース接続 CPU ユニット (Ver.1.29 以降)

2.不正アクセスの防止

 * アクセス元 IP アドレスを制限する
 * 許可されていないネットワークアセスを制限する
 * FINS 書込プロテクト機能を有効にする
 * PLC 保護パスワードを使用することで、書き込み権限を制約する。
 * PLC 上のハードウェア DIP スイッチを使用することで、PLC プログラム変更を禁止する

さらに以下に示す対策も推奨されています。

 * 制御システムや装置のネットワーク接続を最小限に抑え、信頼できないデバイスからのアクセス禁止
 * ファイアウォールの導入によるITネットワークからの分離(未使通信ポートの遮断、通信ホストの制限、FINS ポート (9600) へのアクセスを制限)
 * 制御システムや装置へのリモートアクセスが必要な場合、仮想プライベートネットワーク (VPN) の使用
 * 強固なパスワードの採用と頻繁な変更
 * 権限保有者のみを制御システムや装置へのアクセスを可能とする物理的統制の導入
 * 制御システムや装置で USB メモリなど外部ストレージデバイスを使用する場合の事前ウイルススキャン
 * 制御システムや装置へのリモートアクセス時の多要素認証の導入

3. アンチウィルス保護
制御システムに接続するパソコンに最新の商用品質のウイルス対策ソフトの導入・保守

4. データ入出力の保護
制御システムや装置への入出力データの意図せぬ改変に備えた、バックアップや範囲チェックなどの妥当性の確認

5. 紛失データの復元
データ紛失対策としての定期的な設定データのバックアップと保守

オムロン社によると、FINS プロトコルに起因する問題は CVE-2023-27396 として扱うとのことです。
ベンダ情報

オムロン株式会社
CWEによる脆弱性タイプ一覧  CWEとは?

  1. スプーフィングによる認証回避(CWE-290) [その他]
  2. Capture-replay による認証回避(CWE-294) [その他]
  3. 重要な機能に対する認証の欠如(CWE-306) [その他]
  4. 重要な情報の平文での送信(CWE-319) [その他]
  5. データの信頼性についての不十分な検証(CWE-345) [その他]
  6. リソースの枯渇(CWE-400) [その他]
  7. 外部からの操作の制限不備(CWE-412) [その他]
  8. インタラクション頻度の不適切な制御(CWE-799) [その他]
共通脆弱性識別子(CVE)  CVEとは?

  1. CVE-2023-27396
参考情報

  1. JVN : JVNTA#91513661
  2. JVN : JVNVU#91000130
  3. JVN : JVNVU#91952379
  4. JVN : JVNVU#97111518
更新履歴

  • [2023年04月18日]
      掲載
  • [2023年09月20日]
      影響を受けるシステム:内容を更新