公開日:2023/04/17 最終更新日:2023/09/19

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

概要

FINS(Factory Interface Network Service)は、オムロン社製品で構成されたFA(Factory Automation)ネットワークで使用されるメッセージ通信プロトコルです。FINSはクローズドなFAネットワークで使用されることを前提として設計されています。近年の産業制御システムのセキュリティの視点でFINSプロトコルや対応機器のセキュリティ調査が行われた結果、FINSプロトコルの仕様に起因する問題が報告されています。

影響を受けるシステム

FINSコマンドが実装されているオムロン社製品としては、次のような製品が挙げられます。
  • SYSMAC CS シリーズ CPU ユニット 全バージョン
  • SYSMAC CJ シリーズ CPU ユニット 全バージョン
  • SYSMAC CP シリーズ CPU ユニット 全バージョン
  • SYSMAC NJ シリーズ CPU ユニット 全バージョン
  • SYSMAC NX1P シリーズ CPU ユニット 全バージョン
  • SYSMAC NX102 シリーズ CPU ユニット 全バージョン
  • SYSMAC NX7 データベース接続CPU ユニット 全バージョン

詳細情報

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)

想定される影響

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として扱うとのことです。

JPCERT/CCからの補足情報

JPCERT/CCによる脆弱性分析結果

謝辞

本文書はオムロンおよびJPCERT/CCが共同で執筆しました。

関連文書

JPCERT 緊急報告
JPCERT REPORT
CERT Advisory
CPNI Advisory
TRnotes
CVE CVE-2023-27396
JVN iPedia

更新履歴

2023/09/19
[影響を受けるシステム]を更新しました