// For flags

CVE-2022-39250

Matrix JavaScript SDK vulnerable to key/device identifier confusion in SAS verification

Severity Score

7.5
*CVSS v3.1

Exploit Likelihood

*EPSS

Affected Versions

*CPE

Public Exploits

0
*Multiple Sources

Exploited in Wild

-
*KEV

Decision

-
*SSVC
Descriptions

Matrix JavaScript SDK is the Matrix Client-Server software development kit (SDK) for JavaScript. Prior to version 19.7.0, an attacker cooperating with a malicious homeserver could interfere with the verification flow between two users, injecting its own cross-signing user identity in place of one of the users’ identities. This would lead to the other device trusting/verifying the user identity under the control of the homeserver instead of the intended one. The vulnerability is a bug in the matrix-js-sdk, caused by checking and signing user identities and devices in two separate steps, and inadequately fixing the keys to be signed between those steps. Even though the attack is partly made possible due to the design decision of treating cross-signing user identities as Matrix devices on the server side (with their device ID set to the public part of the user identity key), no other examined implementations were vulnerable. Starting with version 19.7.0, the matrix-js-sdk has been modified to double check that the key signed is the one that was verified instead of just referencing the key by ID. An additional check has been made to report an error when one of the device ID matches a cross-signing key. As this attack requires coordination between a malicious homeserver and an attacker, those who trust their homeservers do not need a particular workaround.

Matrix JavaScript SDK es el kit de desarrollo de software (SDK) cliente-servidor de Matrix para JavaScript. En versiones anteriores a 19.7.0, un atacante que cooperara con un servidor doméstico malicioso podría interferir con el flujo de verificación entre dos usuarios, inyectando su propia identidad de usuario de firma cruzada en lugar de la identidad de uno de los usuarios. Esto conllevaría a que el otro dispositivo confiara/verificara la identidad del usuario bajo el control del servidor doméstico en lugar de la prevista. La vulnerabilidad es un bug en el matrix-js-sdk, causado por la comprobación y firma de las identidades de los usuarios y los dispositivos en dos pasos separados, y la fijación inapropiada de las claves a firmar entre esos pasos. Aunque el ataque es posible en parte debido a la decisión de diseño de tratar las identidades de usuario de firma cruzada como dispositivos de Matrix en el lado del servidor (con su ID de dispositivo establecido en la parte pública de la clave de identidad del usuario), ninguna otra implementación examinada era vulnerable. A partir de la versión 19.7.0, el matrix-js-sdk ha sido modificado para comprobar dos veces que la clave firmada es la que ha sido verificada en lugar de hacer referencia a la clave por su ID. Ha sido realizada una comprobación adicional para informar de un error cuando uno de los ID del dispositivo coincide con una clave de firma cruzada. Como este ataque requiere la coordinación entre un servidor doméstico malicioso y un atacante, quienes confían en sus servidores domésticos no necesitan una mitigación particular

A flaw was found in Mozilla. According to the Mozilla Foundation Security Advisory, Thunderbird users who use the Matrix chat protocol are vulnerable to an impersonation attack. A malicious server administrator could interfere with cross-device verification to authenticate their own device.

*Credits: N/A
CVSS Scores
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
High
Availability
None
Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
High
Availability
None
* Common Vulnerability Scoring System
SSVC
  • Decision:-
Exploitation
-
Automatable
-
Tech. Impact
-
* Organization's Worst-case Scenario
Timeline
  • 2022-09-02 CVE Reserved
  • 2022-09-29 CVE Published
  • 2024-04-21 EPSS Updated
  • 2024-08-03 CVE Updated
  • ---------- Exploited in Wild
  • ---------- KEV Due Date
  • ---------- First Exploit
CWE
  • CWE-287: Improper Authentication
  • CWE-322: Key Exchange without Entity Authentication
CAPEC
Affected Vendors, Products, and Versions
Vendor Product Version Other Status
Vendor Product Version Other Status <-- --> Vendor Product Version Other Status
Matrix
Search vendor "Matrix"
Javascript Sdk
Search vendor "Matrix" for product "Javascript Sdk"
< 19.7.0
Search vendor "Matrix" for product "Javascript Sdk" and version " < 19.7.0"
node.js
Affected