Matrix の脆弱性 CVE-2024-47080/47824 が FIX:厳格なキー共有に対応

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.0matrix-js-sdk バージョン 34.8.0 をリリースし、これらの脆弱性に対処している。ユーザーに対して強く推奨されるのは、これらのバージョンへと、直ちに更新することである。

興味深いことに、このアドバイザリには開、「この脆弱性は、古い非 Rust 暗号化スタックを実行している場合にのみ、matrix-js-sdk において発生する」と記載されている。つまり、Rust ベースの暗号化スタックを使用しているクライアントは、影響を受けないことになる。

今後の展望:仕様の変更とベスト プラクティス

今後において、同様の問題の発生を防ぐために、Matrix.org は MSC3061 仕様を改訂する予定だという。Matrix は、「それにより、MSC3061 キー転送は、検証済みのユーザーが所有する検証済みのデバイスに対してのみ、キーを転送することが明確に示され、信頼できないデバイスとの間で、履歴キーが共有されることがなくなる」と付け加えている。

今回の件が浮き彫りにするのは、Matrix におけるユーザー検証の重要性である。ユーザー同士の検証を奨励することで、Matrix は全体的なセキュリティを強化し、暗号化された通信への不正アクセスを防ぐことを目指している。