Gli sviluppatori della piattaforma di comunicazioni decentralizzate Matrix hanno avvisato riguardo a vulnerabilità critiche nelle librerie matrix-js-sdk, matrix-ios-sdk e matrix-android-sdk2, che consentono agli amministratori dei server di impersonare altri utenti e leggere messaggi nelle chat con crittografia end-to-end (E2EE). Le vulnerabilità sono dovute a errori in specifiche implementazioni del protocollo Matrix e non rappresentano problemi del protocollo stesso. Attualmente, il progetto ha rilasciato aggiornamenti per gli SDK problematici e per alcune applicazioni client basate su di essi.
Per portare a termine con successo un attacco è necessaria una connessione al server controllato dall'attaccante server (homeserver — server per la memorizzazione della cronologia e delle registrazioni dei clienti). L'uso della crittografia end-to-end lato client impedisce all'amministratore server intercettare le comunicazioni, ma le vulnerabilità scoperte consentono di aggirare questa protezione. I problemi riguardano il principale client Matrix 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, né nelle applicazioni Hydrogen, ElementX, Nheko, FluffyChat, Syphon, Timmy, Gomuks e Pantalaimon.
Si evidenziano tre principali scenari di attacco:
- Un amministratore del server Matrix può compromettere la verifica basata su emoji (SAS, Short Authentication Strings) utilizzando firme incrociate e spacciarsi per un altro utente. Il problema è causato da una vulnerabilità (CVE-2022-39250) nel codice matrix-js-sdk, relativa alla miscelazione del trattamento degli identificatori dei dispositivi e delle chiavi di firma incrociata.
- Un aggressore che controlla il funzionamento del server può falsificare un mittente fidato e trasmettere una chiave falsa per intercettare i messaggi da altri utenti. Il problema è causato da una vulnerabilità in matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255) e matrix-android-sdk2 (CVE-2022-39248), che fa sì che il client accetti in modo errato i messaggi destinati ai dispositivi, crittografati utilizzando il protocollo Megolm invece di Olm, attribuendo i messaggi al mittente Megolm anziché al mittente effettivo.
- Utilizzando le vulnerabilità menzionate nel punto precedente, l'amministratore del server può anche aggiungere una chiave di backup falsa all'account utente per estrarre le chiavi utilizzate per crittografare i messaggi.
I ricercatori che hanno scoperto la vulnerabilità hanno anche dimostrato attacchi che portano all'aggiunta di un utente esterno alla chat o al collegamento 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 minori, in quanto tali manovre non passerebbero inosservate: nel caso di sostituzione di un utente, questo apparirebbe nell'elenco degli utenti della chat, e l'aggiunta di un dispositivo genererebbe un avviso, con il dispositivo contrassegnato come non verificato (subito dopo l'aggiunta, le chiavi condivise necessarie per decrittografare i messaggi cominceranno a essere trasferite al dispositivo sostituito).
Fonte: opennet.ru
