Matrix Discloses High-Severity Vulnerabilities in Encryption Key Sharing
2024/10/16 SecurityOnline — 先日に Matrix.org セキュリティ・チームが公表したのは、matrix-js-sdk/matrix-react-sdk に影響を及ぼす2つの深刻な脆弱性に関する情報である。これらの脆弱性は 、MSC3061 (新規ユーザーとのルームキー共有仕様) に関連しており、暗号化されたメッセージ履歴への、不正アクセスを許す可能性があるとされる。

オープン・スタンダードな通信プロトコル Matrix は、サービス・プロバイダー間のシームレスなリアルタイム通信を可能にするものであり、チャット/通話/ビデオ電話などのプラットフォーム間でユーザーをサポートしている。
脆弱性:CVE-2024-47080/CVE-2024-47824
根本的な問題は、暗号化されたルームに新規ユーザーを招待する際の、matrix-js-sdk による暗号化キーの処理方法にある。Matrix のセキュリティ・アドバイザリには、「この実装は matrix-js-sdk により提供されており、招待されたユーザーに既存のキーを送信する場合と、新しいキーを送信する場合のルールが誤って適用され、未検証のデバイスと未検証のユーザーにキーを送信してしまっていた」と記されている。
この不適切なキー共有により、機密性の高い過去のメッセージ・キーが、信頼できない相手に公開される可能性が生じる。このアドバイザリは、「未検証のユーザーとインタラクションする場合に、サーバ側の攻撃者にキーが公開される場合があり、すでに利用されているキーの場合にはリスクが高くなる」と付け加えている。
影響を受けるライブラリと修復
この脆弱性は、以下のバージョンに影響を及ぼす:
- matrix-js-sdk ≥ 9.11.0, < 34.8.0 (CVE-2024-47080)
- matrix-react-sdk ≥ 3.18.0, < 3.102.0 (CVE-2024-47824)
すでに Matrix.org チームは、matrix-react-sdk バージョン 3.102.0 と matrix-js-sdk バージョン 34.8.0 をリリースし、これらの脆弱性に対処している。ユーザーに対して強く推奨されるのは、これらのバージョンへと、直ちに更新することである。
興味深いことに、このアドバイザリには開、「この脆弱性は、古い非 Rust 暗号化スタックを実行している場合にのみ、matrix-js-sdk において発生する」と記載されている。つまり、Rust ベースの暗号化スタックを使用しているクライアントは、影響を受けないことになる。
今後の展望:仕様の変更とベスト プラクティス
今後において、同様の問題の発生を防ぐために、Matrix.org は MSC3061 仕様を改訂する予定だという。Matrix は、「それにより、MSC3061 キー転送は、検証済みのユーザーが所有する検証済みのデバイスに対してのみ、キーを転送することが明確に示され、信頼できないデバイスとの間で、履歴キーが共有されることがなくなる」と付け加えている。
今回の件が浮き彫りにするのは、Matrix におけるユーザー検証の重要性である。ユーザー同士の検証を奨励することで、Matrix は全体的なセキュリティを強化し、暗号化された通信への不正アクセスを防ぐことを目指している。
このブログでは初登場の Matrix なので、調べてみたところ、「分散型通信用のオープン API セットを定義する。Single Point of Control を持たない、グローバルなオープン・フェデレーション・サーバを介して、データを安全に公開/保持/配信するのに適している。Instant Messaging (IM)/Voice over IP (VoIP)/Internet of Things (IoT) や、既存の通信サイロ間のブリッジングなどに使用され、新しいオープンなリアルタイム通信エコシステムの基盤を提供する」と記されていました。なお、この記事では、プロトコルに関する問題と解説されていますが、Matrix サイトでは “API の提供” が強調されていました。
You must be logged in to post a comment.