matrix-js-sdk will freeze when a user sets a room with itself as a its predecessor
Moderate severity
GitHub Reviewed
Published
Aug 20, 2024
in
matrix-org/matrix-js-sdk
•
Updated Aug 20, 2024
Description
Published by the National Vulnerability Database
Aug 20, 2024
Published to the GitHub Advisory Database
Aug 20, 2024
Reviewed
Aug 20, 2024
Last updated
Aug 20, 2024
Impact
A malicious homeserver can craft a room or room structure such that the predecessors form a cycle. The matrix-js-sdk's
getRoomUpgradeHistory
function will infinitely recurse in this case, causing the code to hang. This method is public but also called by the 'leaveRoomChain()' method, so leaving a room will also trigger the bug.Even if the CVSS score would be 4.1 (AV:N/AC:L/PR:L/UI:R/S:C/C:N/I:N/A:L) we classify this as High severity issue.
Patches
This was patched in matrix-js-sdk 34.3.1.
Workarounds
Sanity check rooms before passing them to the matrix-js-sdk or avoid calling either
getRoomUpgradeHistory
orleaveRoomChain
.References
N/A.
References