Los desarrolladores de la plataforma de comunicaciones descentralizadas Matrix han advertido sobre la detección de vulnerabilidades críticas en las bibliotecas matrix-js-sdk, matrix-ios-sdk y matrix-android-sdk2, que permiten a los administradores de servidores hacerse pasar por otros usuarios y leer mensajes en chats con cifrado de extremo a extremo (E2EE). Las vulnerabilidades son causadas por errores en implementaciones específicas del protocolo Matrix y no representan problemas del propio protocolo. Actualmente, el proyecto ha lanzado actualizaciones para las SDK problemáticas y para algunas de las aplicaciones cliente basadas en ellas.
Para llevar a cabo un ataque con éxito se requiere el acceso a un hogar controlado por el atacante servidor (homeserver — servidor para almacenar el historial y las cuentas de los clientes). La aplicación del cifrado de extremo a extremo del lado del cliente no permite que el administrador servidores interfiera en el intercambio de mensajes, pero las vulnerabilidades descubiertas permiten eludir esta protección. Los problemas afectan al cliente principal de Matrix, Element (anteriormente Riot), para Web, sistemas de escritorio, iOS y Android, así como a aplicaciones cliente de terceros, incluyendo Cinny, Beeper, SchildiChat, Circuli y Synod.im. Las vulnerabilidades no se manifiestan en las bibliotecas matrix-rust-sdk, hydrogen-sdk, Matrix Dart SDK, mautrix-python, mautrix-go y matrix-nio, así como en las aplicaciones Hydrogen, ElementX, Nheko, FluffyChat, Syphon, Timmy, Gomuks y Pantalaimon.
Se destacan tres escenarios principales de ataque:
- El administrador del servidor Matrix puede interrumpir la verificación basada en emoji (SAS, Short Authentication Strings) al utilizar firmas cruzadas y hacerse pasar por otro usuario. El problema es causado por una vulnerabilidad (CVE-2022-39250) en el código de matrix-js-sdk relacionada con la mezcla en el procesamiento de identificadores de dispositivos y claves de firmas cruzadas.
- El atacante que controla el servidor puede falsificar un remitente de confianza y transmitir una clave falsa para interceptar mensajes de otros usuarios. El problema es causado por vulnerabilidades en matrix-js-sdk (CVE-2022-39251), matrix-ios-sdk (CVE-2022-39255) y matrix-android-sdk2 (CVE-2022-39248), que hacen que el cliente acepte incorrectamente mensajes dirigidos a dispositivos, cifrados utilizando el protocolo Megolm en lugar de Olm, atribuyendo los mensajes al remitente de Megolm, en lugar del remitente real.
- Al utilizar las vulnerabilidades mencionadas en el punto anterior, el administrador del servidor también puede agregar una clave de respaldo falsa en la cuenta del usuario para extraer las claves utilizadas para cifrar mensajes.
Los investigadores que descubrieron la vulnerabilidad también demostraron ataques que llevan a agregar un usuario externo al chat o a vincular un dispositivo ajeno al usuario. Estos ataques se basan en que los mensajes de servicio utilizados para agregar usuarios al chat no están vinculados a las claves del creador del chat y pueden ser generados por el administrador del servidor. Los desarrolladores del proyecto Matrix clasificaron estas vulnerabilidades como menores, ya que tales manipulaciones no pasarán desapercibidas: en caso de que se sustituya un usuario, aparecerá en la lista de usuarios del chat, y al agregar un dispositivo se mostrará una advertencia y el dispositivo se marcará como no verificado (inmediatamente después de agregar un dispositivo suplantador, comenzarán a transmitirse las claves compartidas necesarias para descifrar los mensajes).
Fuente: opennet.ru
