ベニー・チャーニーの著書『Cybersecurity Upside Down』の詳細はこちら

詳しくはこちらから
サイト翻訳には人工知能を利用しており、正確性を追求しておりますが、必ずしも100%正確とは限りません。ご了承ください。

リモート攻撃からOTシステムを守る:MetaDefender OT Security™がCVE-2021-22659からMicrologix™ 1400コントローラを保護する方法

著者: OPSWAT
OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか
OPSWAT フェローシップ・プログラム参加者

特に、CVE-2017-14469や今回のCVE-2021-22659のような脆弱性は、ロックウェル・オートメーションで広く使用されているMicrologix 1400コントローラを標的としています。OPSWAT フェローシップ・プログラムの学生は、制御された環境でこの脆弱性をテストし、セキュリティの必要性を強調しました。

このブログでは、攻撃者がこの脆弱性を悪用してシステムをクラッシュさせる方法や、適切な入力検証の欠如を利用してPLCの操作を妨害する方法を、学生たちがどのように実演したかを紹介する。

PLCとは?ロックウェル・オートメーションのMicrologix 1400の説明

PLC (プログラマブル・ロジック・コントローラ) は、機械やその他の産業作業を制御してプロセスを自動化するために設計された産業用コンピュータです。過酷な環境でも動作し、センサ入力に基づいて特定のタスクを実行するようにプログラムされています。ロックウェル・オートメーションのMicroLogix 1400コントローラは、中小規模のアプリケーションで一般的に使用されるコンパクトなモジュール式PLCです。コスト効率と柔軟性で知られ、さまざまな通信プロトコルをサポートし、デバイスとのインターフェイス用にデジタルおよびアナログI/Oオプションを提供します。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

プログラミングは通常、ラダーロジッ クを使用してロックウェル・オートメーションのソ フトウェアを使用し、制御シーケンスを作成 できます。MicroLogix 1400は汎用性が高く、マシン制御やプロセスオートメーションなどのタスクに適しています。モジュール式であるため、ユーザは特定のアプリケーション要件に基づいてシステムを拡張し、カスタマイズすることができます。

CVE-2021-22659の紹介

2021年1月、ロックウェル・オートメーションは、インドのヴィールマタ・ジジャバイ工科大学(VJTI)のCOE-CNDSに所属するパルル・シンドワド氏およびファルク・カジー博士から、MicroLogix™ 1400コントローラの脆弱性に関する報告を受けました。 彼らは、バージョン21.6およびそれ以前のバージョンに、認証されていないリモートの攻撃者が特別に細工されたModbusパケットを送信することで、レジスタ内のランダムな値を取得または変更できるセキュリティ上の欠陥を特定しました。この脆弱性が悪用されると、バッファオーバーフローが発生し、サービス拒否(DoS)状態につながる可能性があります。その場合、FAULT LEDが赤色で点滅し、通信が途絶えることがあります。サービス拒否状態からの復旧には、ユーザーによる障害のクリアが必要です。

NVD はこのセキュリティ脆弱性を「深刻度が高い」と評価した。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

攻撃フェイズ

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

脆弱な MicroLogix 1400 PLC にネットワークアクセスできるリモートの認証されていない攻撃者が、特別に細工したパケットを送信してレジスタの値を変更する可能性があります。これにより、デバイスにサービス拒否状態が発生し、システムが破壊されてダウンタイムが発生する可能性があります。このようなインシデントが発生すると、組織の製造オペレーションやその他のビジネス活動に大きな支障をきたす可能性があります。

Modbusプロトコル

1979年にModicon社によって開発されたModbusプロトコルは、インテリジェント機器間のクライアント-サーバ通信を確立するために設計されたメッセージング構造です。元々はModiconのPLCで使用するために設計されましたが、その後、産業用電子機器間の通信のための標準通信プロトコルとなりました。

Modbusプロトコルにはイーサネット用(Modbus TCP)とシリアル回線用(Modbus RTUとModbus ASCII)があります。Modbus RTU(RemoteTerminal Unit)はシリアル通信を通して直接バイナリ形式でデータを送信し、Modbus TCP(TransmissionControl Protocol)はTCP/IPネットワーク上で送信するためにModbusプロトコルデータをTCPパケットに埋め込みます。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

Modbus メッセージ構造

Modbusは、クライアントがModbusデバイスにリクエストを送信し、デバイスがレスポンスを提供するリクエスト・レスポンス・プロトコルです。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

プライマリからセカンダリに送信されるModbusメッセージは、セカンダリのアドレス、"コマンド"("リード・レジスタ "や "ライト・レジスタ "など)、データ、チェック・サム(LRCまたはCRC)を含みます。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

データ・アドレスはデータを読み込んだり変更したりする際にModbusのクエリ・メッセージで使用されます。Modbus は 4 つのデータタイプを定義しています:コイル、入力ステータス、入力レジスタ、保持レジスタです。そのうち2つはコイルとディスクリート入力と呼ばれるオン・オフ(1ビット)の値を格納し、2つはレジスタと呼ばれる16ビット・ワードとして数値を格納します。それぞれ読み出し専用または読み出し/書き込みが可能です。

データタイプ

アクセス

説明

コイル

読み書き

シングルビット出力。

ディスクリート入力

読み取り専用

シングルビット入力。

入力レジスタ

読み取り専用

16ビット入力レジスタ。

ホールディング・レジスタ

読み書き

16ビット出力レジスタ。

Modbusファンクションコードには3つのカテゴリーがあります:

  • パブリック・ファンクション・コード - ユーザー定義コードを除き、1~127まで。
  • ユーザー定義ファンクションコード - 65~72と100~110の2種類。
  • Reserved Function Codes(リザーブド・ファンクション・コード) - 一部の企業がレガシー製品に使用しており、一般には利用できない。

機能タイプ

機能名

機能コード

データ・アクセス

ビットアクセス

物理ディスクリート入力

ディスクリート入力を読む

2

内部ビットまたは物理コイル

コイルを読む

シングルコイルの書き込み

複数のコイルを書き込む

1

5

15

16ビットアクセス

物理入力レジスタ

入力レジスタの読み出し

4

内部レジスタまたは物理出力レジスタ

複数の保持レジスタの読み出し

単一保持レジスタの書き込み

複数の保持レジスタを書き込む

複数のレジスタの読み書き

マスク書き込みレジスタ

読み取りFIFOキュー

3

6

16

23

22

24

ファイル・レコード・アクセス

ファイルレコードの読み込み

ファイルレコードの書き込み

20

21

診断

例外ステータスを読む

診断

コムイベントカウンター取得

イベントログ取得

レポート・スレーブID

デバイス識別情報の読み取り

7

8

11

12

17

43

その他

カプセル化インターフェース・トランスポート

43

機能タイプ:データアクセス
サブタイプ:ビットアクセス
カテゴリ:物理的ディジタル入力
機能名:ディジタル入力の読み取り
機能コード:2

機能タイプ:データアクセス
サブタイプ:ビットアクセス
カテゴリ:内部ビットまたは物理コイル
機能名:コイルの読み取り
機能コード:1

機能タイプ:データアクセス
サブタイプ:ビットアクセス
カテゴリ:内部ビットまたは物理コイル
機能名:単一コイルへの書き込み
機能コード:5

機能タイプ:データアクセス
サブタイプ:ビットアクセス
カテゴリ:内部ビットまたは物理コイル
機能名:複数のコイルへの書き込み
機能コード:15

関数タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:物理入力レジスタ
関数名:入力レジスタの読み取り
関数コード:4

関数タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
関数名:複数のホールドレジスタの読み出し
関数コード:3

関数タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
関数名:単一ホールドレジスタへの書き込み
関数コード:6

機能タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
機能名:複数のホールドレジスタへの書き込み
機能コード:16

機能タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
機能名:複数のレジスタの読み取り/書き込み
機能コード:23

機能タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
機能名:マスク書き込みレジスタ
機能コード:22

関数タイプ:データアクセス
サブタイプ:16ビットアクセス
カテゴリ:内部レジスタまたは物理出力レジスタ
関数名:FIFOキューの読み取り
関数コード:24

機能タイプ:データアクセス
サブタイプ:ファイルレコードアクセス
機能名:ファイルレコードの読み取り
機能コード:20

機能タイプ:データアクセス
サブタイプ:ファイルレコードアクセス
機能名:ファイルレコードの書き込み
機能コード:21

関数タイプ:診断
関数名:例外ステータスの読み取り
関数コード:7

関数タイプ:診断
関数名:診断
関数コード:8

関数タイプ:診断
関数名:COMイベントカウンタの取得
関数コード:11

関数タイプ:診断
関数名:COMイベントログの取得
関数コード:12

機能タイプ:診断
機能名:スレーブIDの報告
機能コード:17

機能タイプ:診断
機能名:デバイス識別情報の読み取り
機能コード:43

機能タイプ:その他
機能名:カプセル化インターフェース転送
機能コード:43

開発

脆弱性分析

OPSWAT Graduate Fellowsは分析を通じて、Modbus TCP通信中に、プロトコルに送信パケットの認証と暗号化が欠けていることを発見しました。さらに、MicroLogix 1400 PLC の入力検証は適切に実装されていません。その結果、リモートの攻撃者はパケットスニッフィングによって Modbus TCP パケットを解析し、Modbus TCP プロトコルを介して認証なしで PLC に任意のリクエストを送信できます。MicroLogix 1400 PLC デバイスには入力検証機能がないため、リモートの認証済み攻撃者がランダムな値のパケットを大量に送信し、PLC をクラッシュさせる可能性があります。

レジスタの上書き

最初に、PLC のレジスタの読み書きで使用される Modbus TCP パケットをキャプチャしようとしました。このため、MicroLogix 1400 PLC のレジスタの読み書きを容易にする Modbus Poll というアプリケーションによって生成されたパケットを調べました。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

Wiresharkを使ってネットワーク・インターフェースからのすべてのパケットをキャプチャすることで、1つのレジスタを書き込むためのModbus TCPパケットを特定することができました:

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか
OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

スニッフィングしたパケットの構造に基づいて、ターゲット PLC のレジスタの書き込みを要求する TCP パケットを送信する簡単な Python スクリプトを開発した。このシナリオでは、PLC の IP アドレスは192.168.93.89 である。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

悪意のある未認証パケットを受信した後、PLC のレジスタが変更された。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか
OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

Micro Logix 1400 では、ほとんどの数学命令は 3 つのパラメータを使用します:ソースA、ソースB、デスティネーション

ソースAとソースBの値は、N13:3とN13:4という2つの16ビット・レジスタから得ることができる。さらに、N13:3とN13:4のようなこれらの16ビット・レジスタの値は、-32,768から+32,767の範囲内に制約されている。N13:3 および N13:4 の値が大きいと、マッチ命令の結果がデータ型の最大範囲を超えてしまい、 PLC がクラッシュする可能性がある。したがって、PLC をクラッシュさせるには、N13:3 と N13:4 を含むすべてのレジスタに大きなランダム値を書き込む必要がある。これを実現するために、Python スクリプトを以下のように変更しました:

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

攻撃のシミュレーション

実際の攻撃をシミュレートするため、OPSWAT フェローは、攻撃者と PLC が同じネットワーク上にあり、互いに通信できるという前提で、OPSWAT CIP ラボにある MicroLogix 1400 PLC のクラッシュを誘発しようとしました。

OPSWAT Labs の MicroLogix 1400 PLC の通常の動作状態では、PLC が REMOTE RUN モードのとき、すべてのレジスタ値が有効で、そのデータ タイプの指定範囲内にあり、ユーザプログラムが正しく機能していることを示しています。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

Pythonスクリプトを実行すると、多数のModbus TCPパケットがPLCに送信され、認証なしですべてのレジスタに大きなランダム値の書き込みが要求されます:

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

これらの悪意のあるパケット要求を受信した後、N13:3とN13:4を含む全てのレジスタの値が16,990に設定される。N13:3およびN13:4レジスタに対するADD演算の結果は、16ビットレジスタの有効範囲を超える。この問題によって整数のオーバーフローが発生し、FAULTED 状態で示されるように、フォルトが発生して PLC の動作が中断される。

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

OPSWAT フェローが、CVE-2021-22659 を悪用して MicroLogix 1400 PLC をクラッシュさせることに成功しました。

修復

OTシステムをリモート攻撃から守る:MetaDefender OT Security™ が Micrologix™ 1400 コントローラを CVE-20 からどのように保護するか

CVE-2021-22659のような脆弱性に直面した場合、OTおよびサイバーフィジカルシステムを保護するためには、包括的な修復が極めて重要である。以下に、攻撃の拡散を防ぐために採用できる主な戦略を示します:

  1. 既知のCVEの検出:CVE-2021-22659のような脆弱性がないか、定期的にネットワークをスキャンする。
  2. 異常動作の監視Micrologix 1400 PLCへの通信頻度が異常に増加した場合、不正なデータ転送が行われている可能性があります。
  3. 新しいデバイス接続の識別:システムは、新しいデバイスが PLC に接続されたことを検出する必要があります。
  4. ネットワークのセグメンテーション:影響を受けるデバイスを隔離することで、攻撃の横方向への拡散を防ぎ、影響を最小限に抑えることができる。

OPSWAT MetaDefender OT Security 、CVEを検出し、異常な動作のためにネットワークを継続的に監視し、不正な接続を識別することによって、これらのニーズに対応します。AIを使用して、通常のトラフィックパターンを学習し、ベースラインの動作を確立し、異常を警告するポリシーを実装します。これにより、潜在的な脅威に対して即座に情報に基づいた対応が可能になります。

CVE-2021-22659を悪用した攻撃の場合、MetaDefender OT Security MetaDefender Industrial Firewall 統合し、設定されたルールに基づいて不審な通信をブロックします。ファイアウォールはAIを使って通常のトラフィックパターンを学習し、不正な接続を防ぐためのポリシーを実施します。

これらの検知、アラート、ネットワークセグメンテーション機能を組み合わせることで、「MetaDefender 」(OT Security )は産業環境にとって理想的な防御メカニズムとなり、オペレーショナルテクノロジー(OT)環境におけるサイバー脅威のリスクと影響を大幅に低減します。

OPSWAT深層防御型サイバーセキュリティ・プラットフォームがどのように貴社の態勢を強化し、成熟させることができるかをご覧ください。無料デモをご希望の方は、今すぐエキスパートにご相談ください。

OPSWATで最新情報をお届けします!

今すぐ登録して、当社の最新情報、ストーリー、イベント情報などを受け取りましょう。