Gli sviluppatori della piattaforma di comunicazioni decentralizzate Matrix hanno avvisato della scoperta di vulnerabilità critiche nelle librerie matrix-js-sdk, matrix-ios-sdk e matrix-android-sdk2, che consentono agli amministratori dei server di spacciarsi per altri utenti e leggere i messaggi nelle chat con crittografia end-to-end (E2EE). Le vulnerabilità sono causate da errori in singole implementazioni del protocollo Matrix e non rappresentano problemi del protocollo stesso. Attualmente, il progetto ha rilasciato aggiornamenti per gli SDK problematici e per alcune delle applicazioni client basate su di essi.
Per effettuare con successo un attacco è necessaria l'interazione con un server domestico controllato dagli aggressori server (homeserver — server per la memorizzazione della cronologia e delle registrazioni degli utenti). L'uso della crittografia end-to-end lato client non consente all'amministratore server di interferire nelle comunicazioni, ma le vulnerabilità scoperte offrono la possibilità di bypassare questa protezione. I problemi riguardano il client Matrix principale Element (ex Riot) per Web, sistemi desktop, iOS e Android, nonché applicazioni client di terze parti, tra cui Cinny, Beeper, SchildiChat, Circuli e Synod.im. Le vulnerabilità non si manifestano nelle librerie matrix-rust-sdk, hydrogen-sdk, Matrix Dart SDK, mautrix-python, mautrix-go e matrix-nio, così come nelle applicazioni Hydrogen, ElementX, Nheko, FluffyChat, Syphon, Timmy, Gomuks e Pantalaimon.
Sono identificati tre scenari principali di attacco:
- L'amministratore del server Matrix può compromettere il funzionamento della verifica basata su emoji (SAS, Short Authentication Strings) durante l'uso di firme incrociate e spacciarsi per un altro utente. Il problema è causato da una vulnerabilità (CVE-2022-39250) nel codice matrix-js-sdk, legata alla miscelazione della gestione degli identificatori dei dispositivi e delle chiavi di firma incrociata.
- Un aggressore che controlla il server può falsificare un mittente fidato e fornire una chiave falsa per intercettare i messaggi da altri utenti. Il problema è causato da vulnerabilità in matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255) e matrix-android-sdk2 (CVE-2022-39248), che portano il client ad accettare erroneamente messaggi indirizzati ai dispositivi, crittografati utilizzando il protocollo Megolm invece di Olm, attribuendo i messaggi al mittente Megolm, anziché al mittente reale.
- Utilizzando le vulnerabilità menzionate nel punto precedente, l'amministratore del server può anche aggiungere una chiave di backup fasulla all'account utente per estrarre le chiavi utilizzate per crittografare i messaggi.
I ricercatori che hanno identificato la vulnerabilità hanno anche dimostrato attacchi che portano all'aggiunta di un utente esterno alla chat o all'attacco di un dispositivo estraneo a un utente. Gli attacchi si basano sul fatto che i messaggi di servizio utilizzati per aggiungere utenti alla chat non sono legati alle chiavi del creatore della chat e possono essere generati dall'amministratore del server. Gli sviluppatori del progetto Matrix hanno classificato queste vulnerabilità come triviali, poiché tali manipolazioni non passeranno inosservate: in caso di sostituzione dell'utente, appare nella lista degli utenti della chat e, quando si aggiunge un dispositivo, viene visualizzato un avviso e il dispositivo viene contrassegnato come non verificato (a questo punto, subito dopo l'aggiunta, il dispositivo fasullo inizierà a ricevere le chiavi condivise necessarie per decifrare i messaggi).
Fonte: opennet.ru
