この記事は2021年8月5日に更新されました。
Nozomi Networks Labsは、MELSOFT通信プロトコルの認証実装に関連する、三菱安全 PLCに影響を及ぼす5件の脆弱性を発見した。
最初の脆弱性セットは2021年1月にICS-CERTを通じてベンダーに開示された。2つ目のセットは、同じプロセスを通じてより最近に開示された。現在、これらの脆弱性に対するパッチは提供されていない。ベンダーは、対応するアドバイザリに記載されている一連の緩和策を提供している。1これらの脆弱性の潜在的な影響を考慮すると、自社のセキュリティ体制を慎重に評価し、提案されている緩和策の適用を検討することを推奨する。
したがって、現時点では、脆弱性の技術的な詳細を明らかにしたり、潜在的な悪意のあるエクスプロイトを実証するために開発したPoC(概念実証)を提供したりはしていません。その代わりに、技術的な詳細が何らかの形で公開されることを懸念して、一般的な詳細を明らかにしています。これでは、資産所有者は、潜在的な攻撃が発生する前に、自社のセキュリティ態勢を評価し、タイムリーな対策を講じるのに十分な情報を得られないままになってしまう。
Nozomi Networks をご利用のお客様には、当社のThreat Intelligence サービスにこれらの脆弱性の検出ロジックが含まれており、攻撃が行われた場合に警告を発します。その他の資産所有者やセキュリティ・コミュニティのメンバーには、このブログ記事で状況をお知らせし、運用環境を保護するための一般的な緩和策を提供します。
MELSOFT 認証の脆弱性の発見と公開
2020年末、Nozomi Networks Labsは、三菱安全PLCと対応するエンジニアリング・ワークステーション・ソフトウェアであるGX Works3で使用される通信プロトコルであるMELSOFTに関する研究プロジェクトを開始した。他ベンダーの類似製品(OT )にもこの攻撃サーフェスに脆弱性が存在することが判明したため、特に認証実装に重点を置いて分析を行いました。
ベンダーに脆弱性を開示するだけでなく、私たちが開発したPoCや調査の技術的な詳細もすべてベンダーと積極的に共有しました。三菱は我々の調査結果を分析し、脆弱性を認めた上で、パッチを当てる戦略を立てました。
すでにお気づきかもしれませんが、安全 PLC や医療機器のような製品のソフトウェア・アップデートは、このブログを読むために使用しているウェブ・ブラウザのような他のソフトウェア製品よりも展開に時間がかかります。これは、パッチの開発とテストに加えて、ベンダーが特定の認証プロセスに準拠する必要があるためです。デバイスの種類や規制の枠組みによっては、個々のソフトウェア更新ごとに認証手続きが必要になることもあります。
なぜ今、脆弱性を明らかにするのか
パッチの開発と展開プロセスが完了するのを待つ間、私たちはThreat Intelligence サービスの顧客向けに検出ロジックを展開しました。同時に、アセット・オーナーやICSセキュリティ・コミュニティ全体と共有するため、より一般的な検知戦略の研究を開始しました。
私たちが発見したタイプの問題は、複数のベンダーのOT プロトコルの認証に影響する可能性が高い。私たちの一般的な懸念は、資産所有者が、これらの実装の技術的な詳細や障害モデルを知らないまま、OT プロトコルにボルトで固定された認証スキームのセキュリティに過度に依存している可能性があるということです。
同じ理由から、以下は三菱安全 PLC と GX Works3 で見つかった問題の一般的な説明です。この段階では、MELSOFT 認証の技術的なすべてに焦点を当てたり、当社が開発した PoC について説明したりすることはありません。その代わりに、セキュリティチームが各自の環境に対するリスクを評価するのに十分な情報を提供します。
三菱 MELSOFT 認証の脆弱性に関する記述
脅威モデル
本研究では 2 つの脅威モデルを検討した。1 つ目は、攻撃者が制限されており、ターゲットの PLC としかパケットを交換できない場合である。もう 1 つは、パケット交換に加えて、攻撃者がエンジニアリングワークステーション(EWS)とターゲッ ト PLC 間のネットワークトラフィックをスニッフィングできる場合である。
MELSOFT認証の概要
この研究では、TCPポート5007を介したMELSOFTを分析した。認証は、ユーザ名とパスワードのペアで実装される。この方式では、まず EWS がユーザ名を含むパケットを平文で送信し、PLC からの応答を受信する。応答には、ユーザ名が PLC にとって有効かどうかを EWS に伝えるフィールドが含まれている。ユーザ名が有効な場合、EWS は要素のセットから生成されたハッシュを含む 2 番目のパケットを送信する。これらの要素の 1 つは、平文のパスワードである。
以下は、我々が発見した脆弱性の概略である。
ユーザー名 ブルートフォース
私たちの知る限りでは、ユーザー名が暗号化された状態で通信上に公開されることは、一連の緩和策で対処されている2。私たちは代わりに、有効なユーザー名のリストがブルートフォース技術によって明らかにできるかどうかを理解しようと試みた。私たちの仮説を検証するために、PoCを実施しました。その結果、ユーザー名は事実上ブルートフォース可能であることがわかりました。攻撃者にとっての制限要因は、ユーザー名の最大長である20文字である。
アンチパスワードのブルートフォース機能は、過度に制限的なアカウントロックアウト機構につながる
MELSOFT プリミティブを実装して認証を成功させた後、有効なユーザが指定されると、正しいパスワードが見つかるまでパスワードの組み合わせを繰り返し試すパスワードブルートフォース機能を使って、最初の PoC を拡張しました。幸運なことに、この場合、攻撃者を効果的にブロックするブルートフォース防止メカニズムが用意されている。しかし、このメカニズムの実装は過度に制限的である。単一のIPを使用する潜在的な攻撃者をブロックするだけでなく、どのIPからのどのユーザーのログインも一定時間ブロックするのだ。
この設計の結果、攻撃者がブルートフォース防止機能を作動させるのに十分な数の限られたパスワードを PLC に送信すると、正当な認証情報を持つすべてのユーザがデバイスとの認証を事実上ブロックされる。この種の攻撃が行われている場合、資産所有者には 2 つの選択肢があります:
- パスワードブルートフォースパケットが PLC に到達するのをブロックし、タイムウィンドウが切れるのを待ってから認証する。
- デバイスを物理的に再起動し、再起動プロセスが完了した直後に認証を行う。
パスワードに相当する秘密の漏洩
パケットの中に、平文のパスワードから派生した秘密が漏れている例が 2 つ見つかった。このようなパケットを読み取ることができる攻撃者は、この秘密を取得し、それを使用して PLC との認証に成功することができる。認証が実装されているため、この秘密は機能的には平文パスワードと同等である。私たちは、平文のパスワードを使用するのではなく、この秘密を使って認証を成功させる PoC を実装しました。
セッションの管理方法に関するさらなる脆弱性は、現在議論中である。アセットオーナーには、このブログで紹介されている緩和策と、先に説明した脆弱性に対してベンダーが提案している緩和策に従うことをお勧めする。
複数の脆弱性を連鎖させた攻撃シナリオの考案
特定された脆弱性をいくつか連鎖させると、いくつかの攻撃シナリオが浮かび上がってくる。現実世界の攻撃は、最終的な目標を達成するために複数の脆弱性を悪用して実行されることが多いので、このアプローチを理解することは重要だ。
この場合、攻撃者はエンジニアリング・ワークステーションと安全 PLC 間のアクティブなセッションを分析することで活動を開始できます。この分析から、攻撃者は特権コマンドを再現する方法を理解し、悪意のある活動を継続するタイミングとして、気付かれる可能性が最も低いと思われるタイミングを選ぶことができます。その後、攻撃者は PLC に登録ユーザのリストを要求します。その返答には、各登録ユーザのパスワードに相当する秘密情報も含まれる。
次のフェーズは、最大の効果を得るために最適なときにいつでも実行できます。攻撃者は本物の認証情報でログインし、安全 PLC ロジックを変更できます。その後、パスワード総当たり攻撃を開始して、PLC から全員をロックアウトできます。エンジニアがエンジニアリングワークステーションから PLC にアクセスし直そうとしても、まずパスワード総当りパケットが PLC に到達するのを阻止しない限り、アクセスできません。
最後に、攻撃者が余計なことをして登録ユーザのパスワードを変更した場合、危害の可能性を防ぐために PLC を物理的にシャットダウンするしかない。
今すぐ検討すべき緩和策
アセットオーナーは以下の一般的な緩和策を検討することを推奨する:
- 攻撃者が MELSOFT 認証または認証されたパケットに平文でアクセスできないように、エンジニアリング ワークステーションと PLC 間のリンクを保護する。
- 攻撃者が PLC と積極的に認証パケットを交換できないように、PLC へのアクセスを保護する。
リークされる可能性があり、アップデートを検討する価値がある「静的情報」は以下の通り:
- PLCユーザー名
- PLC パスワード
将来、ここで説明した脆弱性に対するパッチが利用可能になれば、私たちの研究とPoCの技術的な詳細を公表する。
参考文献
- https://www.mitsubishielectric.com/en/psirt/vulnerability/index.html
- https://us-cert.cisa.gov/ics/advisories/icsa-20-175-01