Matrix 是一個開放的即時通訊協議。 它旨在允許用戶通過在線聊天、IP 語音和視頻聊天進行交流。
最近,去中心化通訊平台「Matrix」的開發者發布了一項警告,指出在 matrix-js-sdk、matrix-ios-sdk 和 matrix-android-sdk2 庫中檢測到了幾個嚴重漏洞,這些漏洞允許伺服器管理員冒充其他用戶並讀取端對端加密 (E2EE) 的聊天訊息。
報告指出,要成功完成攻擊,需要存取攻擊者控制的本機伺服器(本機伺服器:用於儲存客戶端歷史記錄和帳戶的伺服器)。客戶端端對端加密可以防止伺服器管理員幹擾訊息傳遞,但已發現的漏洞允許繞過這種保護。
這些問題影響 Element Matrix 的主要客戶端(以前稱為 Riot),支援 Web、桌面、iOS 和 Android 系統,以及 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、 Gomuks 和 Pantalaimon 應用程序。
請注意,嚴重的嚴重性問題是 matrix-js-sdk 和衍生產品中的實現問題,而不是 Matrix 中的協議問題。 我們看到的最新版本的研究人員論文錯誤地將 Element 描述為“基準矩陣客戶端”,並將較高嚴重性的實施錯誤與較低嚴重性的協議批評混為一談。
主要有三種攻擊場景:
- Matrix 服務器管理員可以通過使用交叉簽名和冒充另一個用戶來破壞基於表情符號的驗證(SAS,短驗證鏈)。 該問題是由與設備 ID 處理和交叉簽名密鑰組合相關的 matrix-js-sdk 代碼中的漏洞 (CVE-2022-39250) 引起的。
- 控制服務器的攻擊者可以冒充受信任的發件人並傳遞假密鑰來攔截來自其他用戶的消息。 該問題是由於 matrix-js-sdk (CVE-2022-39251)、matrix-ios-sdk (CVE-2022-39255) 和 matrix-android-sdk2 (CVE-2022-39248) 中的漏洞導致的客戶端錯誤地接受使用 Megolm 協議而不是 Olm 發送給加密設備的消息,將消息歸因於 Megolm 發送者而不是實際發送者。
- 通過利用上一段中提到的漏洞,服務器管理員還可以向用戶帳戶添加一個虛擬備用密鑰,以提取用於加密消息的密鑰。
發現該漏洞的研究人員也示範如何利用攻擊手段將第三方用戶加入聊天中,或將第三方裝置連接到該用戶。這些攻擊利用了這樣一個事實:用於將使用者新增至聊天中的服務訊息並未與聊天建立者的金鑰關聯,而可以由伺服器管理員產生。
Matrix 專案的開發者將這些漏洞歸類為次要漏洞,因為此類操作並非 Matrix 特有,而僅影響基於該協定的用戶端,但這並不意味著它們不會被忽略:如果使用者被替換,它將顯示在聊天使用者清單中;當新增裝置時,將顯示警告,並且該裝置將被標記為未經授權(在這種情況下,在新增未經授權的裝置後,在新增未獲授權的裝置時,它會被標記為未經授權的裝置,在新增未獲授權時,
您會注意到 matrix-rust-sdk、hydrogen-sdk 和其他第 XNUMX 代和第 XNUMX 代 SDK 不受此處關鍵問題根本原因中的錯誤的影響。 這正是為什麼我們一直在努力用一個乾淨、精心編寫的 Rust 實現以 matrix-rust-sdk 的形式替換第一代 SDK,並完成持續的獨立公共審計。
這些漏洞是由Matrix 協定個別實作中的錯誤所造成的,並非協定本身的問題。目前,該專案已針對受影響的 SDK 以及基於這些 SDK 建置的部分用戶端應用程式發布了更新。
最後,如果您有興趣了解更多相關信息,可以點擊以下連結查看詳情。