Beckhoff TwinCAT/BSD の 4 つの脆弱性により、PLC ロジックの改ざん、DoS が起こる

Beckhoff TwinCAT/BSD の 4 つの脆弱性により、PLC ロジックの改ざん、DoS が起こる

Nozomi Networks 研究所は最近、ベッコフオートメーションの TwinCAT/BSD オペレーティングシステムに 4 つの脆弱性を発見しました。この脆弱性は、適切な条件下で、PLC がロジックの改ざんや DoS 攻撃を受けやすくなる可能性があり、監視された産業プロセスに大きな影響を与えます。実際のところ、私たちが発見した問題は、PLC の root 権限でコマンドを実行する可能性や、OS レベルのフリーズを引き起こす可能性など、影響力のあるサイバー脅威を提示するものであり、解決には電源の再投入が必要です。

攻撃を成功させるには、オペレーティングシステムの有効なローカルアカウントへのアクセスを取得する必要がある。しかし、特定の特権は必要ない。つまり、PLC上で可能な限り低い権限を持つユーザまたはサードパーティアプリケーションであっても、対策を講じなければ、これらの欠陥を悪用できる可能性がある。

ベッコフオートメーションは、この脆弱性を発見した際、2ヶ月という驚異的なスピードで問題解決に取り組みました。これらの脆弱性に対するパッチと緩和策は、ベッコフの公式アドバイザリーページで公開されています。

以下に、これら4件の新たな脆弱性を発見するに至ったセキュリティ調査の結果を示します。改めて、ベッコフ社の迅速な対応と公開プロセスを通じての継続的なプロフェッショナリズムに感謝申し上げます。

研究範囲

TwinCAT/BSDは、ベッコフオートメーションが開発したオペレーティングシステムで、TwinCATのリアルタイム制御機能とBSD Unixベースオペレーティングシステムの堅牢で汎用性の高い機能を組み合わせるように設計されています。TwinCATは、「The Windows Control and Automation Technology」の略称で、ほぼすべてのPCベースのシステムを、マルチPLCシステム機能を備えたリアルタイムコントローラに変換するソフトウェアシステムです。

TwinCAT/BSDにインストール可能なソフトウェアには、ベッコフデバイスマネージャ(図1)があります。これは、ベッコフデバイスの稼動状況、パフォーマンス、設定を、集中管理された場所からリモートで監視するための包括的な機能群です。

このブログで紹介するセキュリティ上の欠陥はすべて、このソフトウエアを分析した上で特定したものである。脆弱性のあるパッケージとバージョンの詳細なリストについては、"脆弱性リストと影響を受けるバージョン "のセクションを参照してください。

図1.ベッコフデバイスマネージャのウェブアプリケーション。

これらの脆弱性の影響は?

これらの脆弱性は、影響を受けるデバイスに重大な影響を及ぼす。攻撃者が PLC のオペレーティングシステムへの何らかのアクセス(詳細はこのセクションで後述する)を達成した場合、取得した特権に関係なく、以下のような攻撃シナリオを実行できるようになる:

  • PLC ロジックの改ざん:限られた認証情報を持つ攻撃者は、特定された脆弱性の 1 つを悪用して、元のパスワードを必要とせずに PLC 管理者のパスワードをリセットすることができます。これにより、標準的なエンジニアリングツールを介して PLC に管理者アクセスで接続し、デバイスを好きなように再プログラムできるようになり、監視された工業プロセスを破壊できる可能性があります。
  • PLC のサービス拒否:限られた認証情報を持つ攻撃者は、別の脆弱性を悪用して、電源リセットが実行されるまで、ネットワークからのリモートでも、マウスやキーボードによるローカルアクセスでも、デバイスを応答不能にし、利用できなくする可能性があります。これは、デバイスに対する他の攻撃と組み合わされる可能性があります。例えば、脅威行為者は、先に挙げた PLC プログラミングの操作を実行して工業プロセスの中断を開始し、その後、このシナリオを実行してデバイスへのアクセスを阻止し、制御を回復しようとする試みをブロックする可能性があります。

敵がこのような攻撃シナリオを実行する最も単純な方法の 1 つは、PLC のオペレーティングシステムアカウントの 1 つに対する有効な資格情報を取得(スニッフィング、フィッシングによる窃取、クラッキングなど)し、SSH 経由でデバイスにログインすることです。攻撃者は、厳重に保護された管理資格情報を標的にする必要はありませんが、監査人や外部の請負業者がデバイスにアクセスして保守活動を実行するために使用するような、あまり特権的でない資格情報に焦点を当てることがあります。実際のところ、この種のクレデンシャルには、複雑性が低い、ローテーションの頻度が低い、デバイス間で再利用されるなど、パスワードの保護が弱いことはそれほど珍しいことではありません。ただし、この戦略ではデバイスと直接対話する必要があり、PLC が公共のインターネットに公開されることはほとんどないため、事前に内部ネットワークにアクセスする必要がある可能性が高い。

脅威行為者が脆弱な PLC を攻撃するために利用できる別のルートとしては、デバイス上のサードパーティ製アプリケーションまたはライブラリのサプライチェーンを侵害し、liblzma や SSH サーバで発生したのと同様の方法で、不正なソフトウェアアップデートがインストールされるのを待つ方法が考えられます。liblzmaの場合、共同メンテナになるのに十分な信頼を確立するために、攻撃者はおよそ3年の作業を要した)些細なこととは言いがたいが、この攻撃シナリオは、一連の認証情報を取得したり、ターゲットシステムとネットワークパケットを交換したりする必要なく、リモートで実行できる可能性がある。

脆弱性リストと影響を受けるバージョン

次の表は、発見された4つの脆弱性をCVSS v3.1の基本スコア順に並べたものである。

CVE IDCWECVSS v3.1 ベーススコアCVSS v3.1 ベクトル
CVE-2024-41173代替パスまたはチャネルを使用した認証バイパス (CWE-288)7.8CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:H/I:H/A:H
CVE-2024-41174ウェブページ生成時の入力の不適切な中和(「クロスサイト・スクリプティング」) (CWE-79)7.3CVSS:3.1/AV:L/AC:L/PR:L/UI:R/S:U/C:H/I:H/A:H
CVE-2024-41176スタックベースのバッファオーバフロー (CWE-121)6.5CVSS:3.1/AV:L/AC:H/PR:L/UI:N/S:U/C:H/I:H/A:L
CVE-2024-41175制限やスロットリングのないリソースの割り当て(CWE-770)5.5CVSS:3.1/AV:L/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

CVE-2024-41173およびCVE-2024-41175は、バージョン2.0.0.1までのTwinCAT/BSDに含まれるIPC-Diagnosticsパッケージに影響を及ぼします(含まれていません)。

CVE-2024-41174は、バージョン2.1.1.0までのTwinCAT/BSDに含まれるIPC-Diagnostics-wwwパッケージに影響します(含まれていません)。

CVE-2024-41176は、TwinCAT/BSDに含まれるMDPパッケージ(バージョン1.2.7.0まで)に影響します(含まれていません)。

脆弱性スポットライト

発見された4つの脆弱性のうち、CVE-2024-41173とCVE-2024-41175は、いくつかの追加的な検討に値する。

CVE-2024-41173 は、他のOT およびIoT 機器でも同様に検出された、認証バイパスの脆弱性です。特に、Beckhoff Device Managerから外部で受信したHTTPリクエストの流れを追跡したところ、管理リクエストは、ループバックインターフェースにのみ公開されている他の内部サービスに転送される前に、Nginxを介してAutheliaによって認証されていることがわかりました。しかし、後者のサービスは認証レベルの再検証ステップを省略し、受信したコマンドのディスパッチまたは実行のみに集中しています。その結果、Authelia認証のために外部から直接管理リクエストを送信できない低特権ユーザーは、SSH経由で認証を行うだけで、この保護メカニズムをバイパスすることができます(SSHアクセスは、低特権ユーザーでもベッコフデバイスマネージャを通じて許可されます)。

管理リクエストの1つが、認証情報を必要とせずに任意のアカウントの削除と作成を許可しているため、攻撃者は、デバイス上で最も高い権限を持つアカウント「Administrator」を削除し、新しいパスワードで再作成することで、この脆弱性を悪用する可能性がある。この段階で、デバイスの完全な制御が可能となり、攻撃者は自由にデバイスをプログラムし直すことができる。この攻撃シナリオを図2に示します。

図 2.PLC の再プログラミングにつながる攻撃シナリオの例。

対照的に、CVE-2024-41175は、外部からの入力に対してロバストなパーサーを設計する際に考慮しなければならない微妙な点を示す、もう一つの例である。

すべての管理リクエストはHTTP POSTリクエストの形式で送信され、ベッコフが定義した構造に従ってBase64エンコードされたペイロードがシリアライズされます。文字列は、文字列の長さを表す固定サイズの数値と、文字列の実際の内容の2つのフィールドを使用してシリアライズされます。

おそらく、継続的なコード変更を必要とせず、可能な限り多くのシナリオに対応するため、文字列の長さは4バイトの符号なし整数で表されるように選択された。したがって、構文解析ルーチンに伝達可能な文字列の最大サイズは "0xffffffff "であり、これは約4GBに相当する。

4 GBのRAMを搭載したBeckhoff CX5130 PLCのラボで実施したテストによると、4 GBのサイズが宣言された文字列を含むリクエストがPLCに送信されると(実際にはリクエストに4 GBの文字列を含めず、文字列サイズを宣言するだけで十分)、構文解析ルーチンがこの大きな文字列にスペースを割り当てようとします。このため、PLCで使用できるリソースがすぐに枯渇し、数秒以内にフリーズします。この場合、PLCはネットワーク経由でも、マウスとキーボードを使ってローカルでも使用できなくなります。

図3は、同様に細工されたリクエストを送った数秒後の「ps」の出力のスナップショッ トである。

図3.CVE-2024-41175を悪用した結果。

修復

これらの脆弱性が報告された後、ベッコフ社は速やかに脆弱性のあるパッケージの修正バージョンを提供しました。資産所有者は、TwinCAT/BSDのインストールにおいて、影響を受けるソフトウェアを以下のバージョンにアップデートすることで、これらの脆弱性に対処することができます:

  • IPC-Diagnostics: 少なくともバージョン 2.0.0.1
  • IPC-Diagnostics-www: 少なくともバージョン 2.1.1.0
  • MDP: 少なくともバージョン1.2.7.0

これらの脆弱なパッケージのアップデートが実行不可能な場合、以下の緩和策を適用することで、悪用に成功する可能性を減らすことができる:

  • 権限に関係なく、TwinCAT/BSDが動作しているPLCにアクセスできるローカルアカウントの数は最小限にしてください。信頼できるアカウントのみが許可され、そのパスワードが徹底的に保護されていることを確認してください;
  • デバイスへの正常なログインを記録し、定期的に監査する;
  • サードパーティのアプリケーションやパッケージをTwinCAT/BSDにインストールしたり、アップデートしたりする前に、十分に確認してください。

アセットオーナーは、ベッコフインフォメーションシステムWebポータルの公式アドバイザリページで、影響を受けるコンフィギュレーションに関するすべての公式パッチと緩和策を確認できます。