サイバー・フィジカル・システムの信頼性を脅かすウェブ・インターフェースの欠陥

サイバー・フィジカル・システムの信頼性を脅かすウェブ・インターフェースの欠陥

デバイスの脆弱性を考えるとき、私たちはしばしばソフトウェアスタックの低レベルプロトコルの欠陥を思い浮かべる。しかし、重大なリスクのある領域は、今日の多くのOT 、IoT デバイスを管理するために使用されるウェブ・インターフェースである。

最近、我々のラボで配電盤(PDU)であるシュナイダーエレクトリック/APC AP7920Bを分析し、そのウェブインタフェースに脆弱性を発見した。私たちは責任ある開示プロセスを通じてこれを報告し、CISA と Schneider Electric はそれぞれ ICS-CERT 勧告ICSA-21-348-02と通知SEVD-2021-348-04 を発行し、公に明らかにしました。これは、Nozomi Networks OT およびIoT セキュリティに関する一連の調査結果の最新版である。

PDUは、そこに接続された機器を監視し、電力を分配するために使用されるデバイスです。脅威者がPDUへの特権的なアクセスを獲得した場合、コンセントをシャットダウンしたり、機器の再起動を引き起こしたりすることができ、運用のアップタイムを危険にさらす可能性があります。

問題の Schneider Electric/APC PDU は、エネルギー、輸送、上下水道システムなどの物理インフラで使用されるスイッチドラックユニットです。我々が発見した脆弱性は、その管理ソフトウェアが、調査時点で利用可能な特定のブラウザの最新バージョンで使用された場合に適用された。つまり、全世界のデスクトップ・ブラウザーの約10%が攻撃実行に利用された可能性があるということだ1。

この記事では、PDU、ウェブセキュリティの基本、および AP7920B の脆弱性について説明する。この特定の問題は、他のセキュリティの欠点と並んで、攻撃者がアプリケーションの権限を低レベルから高レベルに昇格させ、接続された機器をシャットダウンしたり、危害を加えたりするのに必要な権限と機会を提供することを可能にする可能性があります。

重要機器を保護する配電ユニット

配電盤(PDU)は、プラグインされた電化製品を監視し、電力を分配するために設計された製品です。PDUは、異常な電力状態に対してアラームを作動させたり、特定のコンセントへの配電を制御したりすることができます。また、異常な状態が発生した場合にアラームを作動させたり、特定のコンセントへの電力供給を停止したりするなど、特定のイベントに対する自動機能をプログラムすることもできます。これらのシステムは通常、重要な機器の制御と電源供給に使用され、リソースを効率的に再配分し、潜在的に有害なラインサージから保護します。

ほとんどの最新インフラ機器と同様に、汎用PDUが提供する管理サービスには、一般的にウェブインタフェースからアクセスします。このインターフェースはほとんどのデバイスからアクセス可能で、ベンダー固有のソフトウェアをインストールする必要はありません。しかし、ウェブチャネルが存在するということは、IT管理者が長年にわたって複雑なエンタープライズウェブアプリケーションで知るようになったウェブの脆弱性と攻撃の全範囲を、このようなデバイスの設計と開発時に考慮しなければならないことも意味します。

シュナイダーエレクトリック/APC AP7920Bは、上記の説明に当てはまるスイッチ型ラックPDUで、ウェブインターフェースを介して接続された周辺機器の遠隔監視と制御が可能です。

Webセキュリティの基礎セッション管理とユーザー認証

ウェブ・アプリケーションの開発中に考慮すべき最も重要なセキュリティの基本事項の一つは、セッション管理です。セッション管理とは、HTTPのようなステートレスプロトコルを通じて、Webサービス上のユーザーセッションを追跡することです。AP7920B PDUは、2つのコンカレントシークレットを通してユーザーセッションを処理します:

  • クッキーは、HTTPクッキー・ヘッダーの中で送信される。
  • 例「クッキーAPCmz1wu40CfLX2LAbp=+01O9I4PeAlqiZgNMutWPcybhEiuV70saqXBX80" のようになります。
  • HTTPリクエストのURL内に送信されるトークン。
  • 例えば"GET /NMC/ovg5z21m+C8sy5fDmHltlA/olstatus.htm"'.

これらの値はアプリケーションによってランダムに選ばれます。これらの値は、アプリケーションとの最初のインタラクション時にユーザのブラウザに設定され、ログイン後やログアウト後、タイムアウトの場合など、セッションに関連する操作のたびに更新されます。

クッキーとトークンの例
ユーザーセッションを追跡するためにHTTPリクエストのHTTPクッキーヘッダとURLの中に送信されるクッキーとトークンの例。

各ユーザ・レベルに付与される権限と特権は、ウェブ・アプリケーション・セキュリティのもう1つの重要な側面です。AP7920B で定義されたユーザのタイプの中で、デバイスは以下のような「アウトレット」ユーザのコンフィギュレーションを許可します。

"デバイスユーザーと同じメニューにアクセスできる(デバイス関連画面への読み取りと書き込みができる)が、設定の変更、デバイスの制御、データの削除、ファイル転送オプションの使用は制限されている。"

特筆すべきは、ユーザーガイドにこう説明されていることだ:

"個々のコンセントは、各コンセントユーザーに割り当てることができます。アウトレットユーザーがデバイスにログインすると、そのユーザーは、アウトレットユーザーに割り当てられたアウトレットのみを表示または制御できます、 アウトレットユーザーに割り当てられたアウトレットのみを表示または制御できます。"2
アウトレットユーザーの設定ページ
AP7920B のアウトレットユーザの設定ページで、割り当てられたアウトレットのみを表示または制御するようにユーザを制限する必要があります。

脆弱性の説明 - 外部リンクとCSRF対策なしのアクション

アウトレットユーザは、管理者から付与された権限で、特定のアウトレットの「アウトレット構成」ページを操作できます。このページでは特に、クリックすると新しいブラウザウィンドウが開く外部HTTPまたはHTTPSリンクを設定できます。

AP7920Bユーザーガイドによると、これらの外部リンクは以下のように設計されています。

"より簡単にユーザーマニュアルなどを見るために、(該当する場合)コンセントに接続された外部デバイスのIPアドレスに設定する(あるいは、デバイスの製造元のウェブページに設定する)"
アウトレット設定ページでは、外部リンクを設定することができます。
アウトレット設定ページでは、クリックすると新しいブラウザウィンドウが開く外部リンクを設定することができます。

この機能のセキュリティをレビューしている間、アプリケーションのユーザによって設定された外部リンクに問題があることに気づきました。リンクは「rel="noreferrer"」硬化属性で設定されておらず、アプリケーションによってリファラポリシーが定義されていませんでした。

設定ページ内の外部リンク
AP7920Bの設定ページ内の外部リンク
AP7920Bの設定ページ内の外部リンクに、「rel="noreferrer"」ハードニング属性または定義されたリファラーポリシーが設定されていませんでした。

ブラウザが特に緩和策を適用しない限り(例えば、古い「no-referrer-when-downgrade」ポリシーの代わりに、デフォルトで「strict-origin-when-cross-origin」 ポリシーを適用する3)、セキュリティ問題が発生する可能性があります。ユーザがアプリケーションで定義されたリンクをクリックすると、(ユーザセッショントークンを含む)完全な HTTP Referer ヘッダがリンクの外部ドメインに送信される可能性があります4。

さらに、このアプリケーションは、セキュリティに関連するアクションにおいて、特定のクロスサイトリクエストフォージェリ(CSRF)5防止策を採用していないことが観察されました。例えば、下の画像は、2番目のアウトレットのシャットダウンを設定するためのクロスオリジンリクエストを示しています:

クロスオリジン・リクエストの例
第2アウトレットのシャットダウンを設定するためのクロスオリジンリクエストの例。

サーバー側のCSRF対策が介入せず、サーバーがリクエストに積極的に応答していることに注意。実際、URLトークンはPDUに対するCSRF攻撃を妨げる唯一の秘密である。

攻撃をうまく妨害できるかもしれない他の緩和策は、いくつかのブラウザ(例えば Chromium ベースのブラウザ)によって強制されるクライアント側の「SameSite=Lax by default」ポリシーです。リクエストは HTTP POST であり、セッションクッキーは SameSite 属性なしで設定されるので、これは機能します6。

組み合わせることで

  • 外部URLの硬化属性の欠如
  • URL内のトークン値の送信
  • トークン以外にCSRF攻撃に対する防御がない。

より低い特権の悪意ある行為者がより高い特権を得ることができる。

デバイスに侵入するために、脅威者は単にページへのリンクを設定します。例えば、被害者と同じ権限で AP7920B にクロスオリジンの GET/POST リクエストを送信します。被害者は、エクスプロイト/攻撃が成功したことすら気づかないでしょう。

私たちのテストでは、アウトレット 1 のみとやり取りするように設定されたアウトレット ユーザーが、2 つ目のアウトレットをシャットダウンすることができました。これには、アウトレット設定ページ経由で挿入された特別に細工されたリンクをクリックするよう、より高い特権を持つ被害者ユーザーを説得する必要がありました。

アウトレット1にアクセスできるアウトレットユーザー
アウトレット 1 にアクセスできるアウトレットユーザは、アウトレット 2 とやり取りするために必要な特権を得ることができるリンクを、アウトレット構成ページに挿入することができました。

さらに、ユーザー作成リクエストは、上に示したシャットダウンリクエストと同じアンチCSRFプロテクションの問題を抱えていた。アウトレットユーザーは、バックグラウンドで管理者権限を持つ任意の「バックドア」ユーザーを作成する悪意のあるリンクを作成することができました。このリンクに AP7920B の管理者がアクセスした場合、アウトレットユーザは特権の完全な昇格(EoP)を達成しました。

アウトレットユーザーは、管理者権限を持つ任意の「バックドア」ユーザーを作成することができる。
アウトレットユーザーは、正当な管理者が悪意のあるリンクをクリックすることで得られる管理者権限を持つ任意の「バックドア」ユーザーを作成することができる。

サイバー・フィジカル・システムの信頼性を脅かすウェブ・インターフェースの欠陥

ブラウザの要件としては、被害者は「no-referrer-when-downgrade」ポリシーを同時に採用し、「SameSite=Lax by default」ポリシーを一切採用しないブラウザを使用しなければならない。脆弱性が発見された2021年3月現在、Mozilla Firefox、Microsoft Legacy Edge、Microsoft Internet Explorerの最新バージョンはこれらの要件を満たしている。つまり、全世界のデスクトップ・ブラウザーの約10%が攻撃実行に成功した可能性があるということだ7。

この問題は微妙なものではあるが、いかに危険なものであるかを示しただけである。この問題を避けるために、私たちは次のことを推奨する:

  • Webアプリケーションの外部リソースへのすべてのHTTPリンクに「rel="noreferrer"」属性を追加する。
  • サーバーのレスポンスにReferrer-Policy HTTPヘッダーを追加する(例:"same-origin")。
  • あるいは、HTMLページ内の "meta "タグによってリファラー制限ポリシーを設定する。

一般的に言って、CSRF 攻撃は、サイバーフィジカル機能を持つブラウザ制御可能なデバイスに対する最も脅威的な問題の一部である。リスクの低い問題であっても深刻な事態につながる可能性があるため、ベンダーはこれらのデバイスのウェブアプリケーションにおけるCSRF対策を可能な限り強化すべきである。

シュナイダーエレクトリックは、この問題を解決するために、ファームウェア v7.0.6(NMC2カード用)と v1.2.0.2(NMC3カード用)をリリースした。ネットワーク管理者は、APC AP7920Bユニットを使用しているかどうかを確認し、使用している場合は、アップデートを適用するか、補償制御を実装する必要があります。

参考文献

  1. 「世界のデスクトップブラウザ市場シェア - 2021年3月」StatCounter、2021年3月。
  2. 「ユーザーガイドRack Power Distribution Units and In-Line Current Meters", APC by Schneider Electric, August 2019.
  3. 「Referrer-Policy」、Mozilla。
  4. Cross-Domain Referer Leakage",PortSwigger.
  5. 「クロスサイトリクエストフォージェリ」Kirsten, S., OWASP.
  6. "SameSite Cookies",Mozilla.
  7. 「世界のデスクトップブラウザ市場シェア - 2021年3月」StatCounter、2021年3月。