多くの Matrix の顧客を危険にさらす複数の脆弱性を検出

マトリックスプロトコル

Matrix は、オープンなインスタント メッセージング プロトコルです。 ユーザーがオンライン チャット、Voice over IP、およびビデオ チャットを介して通信できるように設計されています。

最近、分散型通信プラットフォーム「Matrix」の開発者は、matrix-js-sdk、matrix-ios-sdk、matrix-android-sdk2ライブラリに検出された複数の重大な脆弱性について警告を発しました。これらの脆弱性により、サーバー管理者は他のユーザーになりすまして、エンドツーエンド暗号化(E2EE)されたチャットメッセージを読み取ることが可能になります。

攻撃を成功させるには、攻撃者が管理するホームサーバー(クライアントの履歴やアカウントを保存するサーバー)へのアクセスが必要であると述べられています。クライアント側でエンドツーエンド暗号化を使用することで、サーバー管理者がメッセージングに干渉することを防ぐことができますが、今回発見された脆弱性により、この保護機能が回避される可能性があります。

これらの問題は、Element MatrixのWeb、デスクトップ、iOS、Android向けのメインクライアント(旧Riot)に加え、Cinny、Beeper、SchildiChat、Circuli、Synod.imなどのサードパーティ製クライアントアプリケーションにも影響を及ぼします。

これらの脆弱性は、ライブラリ matrix-rust-sdk、hydrogen-sdk、Matrix Dart SDK、mautrix-python、mautrix-go、matrix-nio、および Hydrogen、ElementX、Nheko、FluffyChat、Siphon、Timmy、ゴムク、およびパンタライモン アプリケーション。

重大度の問題は、matrix-js-sdk および派生物での実装の問題であり、Matrix でのプロトコルの問題ではないことに注意してください。 私たちが確認した研究者の論文の最新バージョンでは、Element を「ベンチマークの Matrix クライアント」として誤って描写しており、重大度の高い実装エラーと重大度の低いプロトコルへの批判を混同しています。

主な攻撃シナリオは3つあります。

  1. Matrix サーバー管理者は、相互署名を使用して別のユーザーになりすますことにより、絵文字ベースの検証 (SAS、Short Authentication Chains) を破ることができます。 この問題は、デバイス ID の処理とクロス署名キーの組み合わせに関連する、matrix-js-sdk コードの脆弱性 (CVE-2022-39250) によって引き起こされます。
  2. サーバーを制御する攻撃者は、信頼できる送信者になりすまして偽のキーを渡して、他のユーザーからのメッセージを傍受できます。 この問題は、matrix-js-sdk (CVE-2022-39251)、matrix-ios-sdk (CVE-2022-39255)、matrix-android-sdk2 (CVE-2022-39248) の脆弱性が原因で発生します。クライアントは、 Olm の代わりに Megolm プロトコルを使用して、暗号化されたデバイス宛てのメッセージを誤って受け入れ、メッセージを実際の送信者ではなく Megolm 送信者に帰属させます。
  3. 前の段落で説明した脆弱性を悪用することで、サーバー管理者はダミーの予備キーをユーザー アカウントに追加して、メッセージの暗号化に使用されるキーを抽出することもできます。

この脆弱性を発見した研究者らは、第三者のユーザーをチャットに追加したり、第三者のデバイスをユーザーに接続したりする攻撃も実証した。これらの攻撃は、ユーザーをチャットに追加するために使用されるサービスメッセージがチャット作成者のキーにリンクされておらず、サーバー管理者によって生成できるという事実を悪用している。

Matrixプロジェクトの開発者は、このような操作はMatrix固有のものではなく、プロトコルに基づくクライアントにのみ影響するため、これらの脆弱性を軽微なものと分類しましたが、これは見過ごされないという意味ではありません。ユーザーが置き換えられた場合はチャットユーザーリストに表示され、デバイスが追加された場合は警告が表示され、デバイスは未検証としてマークされます(この場合、不正なデバイスを追加した直後に、メッセージの復号に必要な公開鍵の受信が開始されます)。

ここでは、matrix-rust-sdk、hydrogen-sdk、およびその他の第 XNUMX 世代と第 XNUMX 世代の SDK が、重大な問題の根本原因のバグの影響を受けていないことに気付くでしょう。 まさにこれが、第 XNUMX 世代の SDK を、継続的な独立した公開監査を備えた、matrix-rust-sdk の形式でクリーンで慎重に記述された Rust の実装に置き換えるために取り組んできた理由です。

これらの脆弱性は、 Matrixプロトコルの個々の実装におけるエラーに起因するものであり、プロトコル自体に問題があるわけではありません。プロジェクト側では、影響を受けるSDKおよびそれらをベースに構築された一部のクライアントアプリケーション向けにアップデートをリリース済みです。

最後に、これについてさらに詳しく知りたい場合は、以下のリンクから詳細をご覧いただけます


Googleで優先ソースとして追加する