Rilevate diverse vulnerabilità che compromettono molti clienti Matrix

protocollo matrice

Matrix è un protocollo di messaggistica istantanea aperto. È progettato per consentire agli utenti di comunicare tramite chat online, voice over IP e chat video.

Di recente, gli sviluppatori della piattaforma di comunicazione decentralizzata "Matrix" hanno pubblicato un avviso riguardante diverse vulnerabilità critiche rilevate nelle librerie matrix-js-sdk, matrix-ios-sdk e matrix-android-sdk2, che consentono agli amministratori del server di impersonare altri utenti e leggere i messaggi di chat crittografati end-to-end (E2EE).

Si afferma che per portare a termine con successo un attacco è necessario l'accesso a un server domestico controllato dagli aggressori (server domestico: un server utilizzato per memorizzare la cronologia e gli account dei clienti). L'utilizzo della crittografia end-to-end lato client impedisce all'amministratore del server di interferire con la messaggistica, ma le vulnerabilità identificate consentono di aggirare questa protezione.

I problemi riguardano il client principale di Element Matrix (precedentemente Riot) per Web, desktop, iOS e Android, nonché applicazioni client di terze parti come Cinny, Beeper, SchillidiChat, Circuli e Synod.im.

Le vulnerabilità non compaiono nelle librerie matrix-rust-sdk, hydrogen-sdk, Matrix Dart SDK, mautrix-python, mautrix-go e matrix-nio, così come Hydrogen, ElementX, Nheko, FluffyChat, Siphon, Timmy, Applicazioni Gomuks e Pantalaimon.

Si noti che i problemi di gravità critica sono problemi di implementazione in matrix-js-sdk e derivati ​​e non sono problemi di protocollo in Matrix. L'ultima versione del documento dei ricercatori che abbiamo visto ritrae erroneamente Element come "il client Matrix di riferimento" e confonde errori di implementazione di gravità maggiore con critiche al protocollo di gravità inferiore.

Esistono tre principali scenari di attacco:

  1. L'amministratore del server Matrix può interrompere la verifica basata su emoji (SAS, Short Authentication Chains) utilizzando firme incrociate e impersonando un altro utente. Il problema è causato da una vulnerabilità (CVE-2022-39250) nel codice matrix-js-sdk relativo alla combinazione di gestione dell'ID dispositivo e chiavi di firma incrociata.
  2. Un utente malintenzionato che controlla il server può impersonare un mittente attendibile e passare una chiave falsa per intercettare i messaggi di altri utenti. Il problema è dovuto a una vulnerabilità in matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255) e matrix-android-sdk2 (CVE-2022-39248), che ha causato il Il client accetta erroneamente messaggi indirizzati a dispositivi crittografati utilizzando il protocollo Megolm anziché Olm , attribuendo i messaggi al mittente Megolm anziché al mittente effettivo.
  3. Sfruttando le vulnerabilità citate nel paragrafo precedente, l'amministratore del server può anche aggiungere una chiave di riserva fittizia all'account utente per estrarre le chiavi utilizzate per crittografare i messaggi.

I ricercatori che hanno identificato la vulnerabilità hanno anche dimostrato attacchi che aggiungono un utente di terze parti a una chat o collegano un dispositivo di terze parti all'utente. Questi attacchi sfruttano il fatto che i messaggi di servizio utilizzati per aggiungere utenti alla chat non sono collegati alle chiavi del creatore della chat e possono essere generati dall'amministratore del server.

Gli sviluppatori del progetto Matrix hanno classificato queste vulnerabilità come minori , poiché tali manipolazioni non sono specifiche di Matrix e interessano solo i client basati sul protocollo, ma ciò non significa che passeranno inosservate: se un utente viene sostituito, verrà visualizzato nell'elenco degli utenti della chat, e quando viene aggiunto un dispositivo, verrà visualizzato un avviso e il dispositivo verrà contrassegnato come non verificato (in questo caso, immediatamente dopo l'aggiunta del dispositivo non autorizzato, inizierà a ricevere le chiavi pubbliche necessarie per decifrare i messaggi).

Noterai che matrix-rust-sdk, Hydrogen-sdk e altri SDK di XNUMXa e XNUMXa generazione non sono stati interessati dai bug nella causa principale dei problemi critici qui. Questo è esattamente il motivo per cui abbiamo lavorato per sostituire gli SDK di prima generazione con un'implementazione pulita e accuratamente scritta di Rust sotto forma di matrix-rust-sdk, completa di un audit pubblico indipendente in corso.

Le vulnerabilità sono causate da errori nelle singole implementazioni del protocollo Matrix e non rappresentano un problema del protocollo stesso. Il progetto ha già rilasciato aggiornamenti per gli SDK interessati e per alcune delle applicazioni client basate su di essi.

Infine, se siete interessati ad approfondire l'argomento , potete trovare maggiori dettagli al seguente link.


Aggiungi come fonte preferita in Google