Recentemente il sviluppatori di piattaforme comunicazioni decentralizzates «Matrix» ha pubblicato un avviso su varie vulnerabilità che sono stati rilevati e sono critici 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 dalle chat crittografate end-to-end (E2EE).
Si è detto che per completare con successo un attacco, è necessario accedere a un server domestico controllato dagli aggressori (server principale: un server per memorizzare la cronologia e gli account dei client). L'utilizzo della crittografia end-to-end lato client non consente all'amministratore del server di intervenire nella messaggistica, ma le vulnerabilità individuate consentono di aggirare questa protezione.
I problemi interessano il client Element Matrix principale (precedentemente Riot) per Web, desktop, iOS e Android, nonché app client di terze parti come Cinny, Beeper, SchildiChat, 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.
Ci sono tre scenari attacco principale:
- 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.
- 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.
- 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à ha anche dimostrato attacchi che aggiungono un utente di terze parti a una chat o collegare un dispositivo di terze parti all'utente. Gli attacchi si basano sul 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 inerenti a Matrix e interessano solo i client in base al protocollo, ma ciò non significa che non passeranno inosservate: se un utente viene sostituito, verrà mostrato nell'elenco degli utenti della chat, e una volta aggiunto un dispositivo, verrà visualizzato un avviso e il dispositivo verrà contrassegnato come non verificato (in questo caso, subito dopo aver aggiunto il 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 bug nelle singole implementazioni del protocollo Matrix e non sono problemi del protocollo stesso. Attualmente, il progetto ha rilasciato aggiornamenti per gli SDK problematici e alcune delle applicazioni client basate su di essi.
Finalmente sì ti interessa saperne di più, puoi controllare i dettagli nel file seguente link