<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
    <title>Matrix.org - Security</title>
    <subtitle>The Matrix.org Foundation</subtitle>
    <link href="https://matrix.org/category/security/atom.xml" rel="self" type="application/atom+xml"/>
    <link href="https://matrix.org"/>
    <generator uri="https://www.getzola.org/">Zola</generator>
    <updated>2026-02-18T21:21:47+00:00</updated>
    <id>https://matrix.org/category/security/atom.xml</id>
    
    
    
    
<entry xml:lang="en">
    <title>Analysis of reported issues in vodozemac</title>
    <published>2026-02-18T21:21:47+00:00</published>
    <updated>2026-02-18T21:21:47+00:00</updated>
    <author>
      <name>Matrix.org Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2026/02/analysis-of-reported-issues-in-vodozemac/" type="text/html"/>
    <id>https://matrix.org/blog/2026/02/analysis-of-reported-issues-in-vodozemac/</id>
    <content type="html">&lt;p&gt;Today a &lt;a href=&quot;https:&#x2F;&#x2F;soatok.blog&#x2F;2026&#x2F;02&#x2F;17&#x2F;cryptographic-issues-in-matrixs-rust-library-vodozemac&#x2F;&quot;&gt;blog post&lt;&#x2F;a&gt; was published alleging a series of vulnerabilities in Matrix&#x27;s vodozemac cryptographic library. The post follows a private disclosure to &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt;. While we prefer coordinated disclosure, the author chose to publish prior to further technical discussion, including clarification of the claimed severity.&lt;&#x2F;p&gt;
&lt;p&gt;We take cryptographic concerns seriously and welcome scrutiny of our cryptographic protocols and implementations. However, we disagree with several conclusions in the post regarding exploitability and impact to Matrix deployments. Below we analyse the claims in terms of realistic attacker capabilities and protocol invariants.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;executive-summary&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#executive-summary&quot; aria-label=&quot;Anchor link for: executive-summary&quot;&gt;🔗&lt;&#x2F;a&gt;Executive summary&lt;&#x2F;h2&gt;
&lt;ul&gt;
&lt;li&gt;We confirm the Olm 3DH code path in vodozemac doesn&#x27;t currently reject all-zero X25519 outputs.&lt;&#x2F;li&gt;
&lt;li&gt;We disagree with the post&#x27;s claim that this leads to any loss of confidentiality in Matrix, let alone complete loss.&lt;&#x2F;li&gt;
&lt;li&gt;Olm v2 is neither standardised nor deployed in today&#x27;s Matrix. Claims framed as downgrades are about experimental future configuration, not the current spec.&lt;&#x2F;li&gt;
&lt;li&gt;Olm v1 uses truncated 64-bit message authentication tags, a remnant of an earlier time when Matrix&#x27;s cryptography was closely following Signal&#x27;s. We acknowledge this as a trade-off and that using longer authentication tags would provide a larger security margin, as has been publicly documented in a &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;media&#x2F;Least%20Authority%20-%20Matrix%20vodozemac%20Final%20Audit%20Report.pdf&quot;&gt;previous audit of vodozemac&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;Nevertheless, truncated 64-bit message authentication tags remain a common trade-off in deployed messaging systems and we do not consider this a practically exploitable vulnerability. For example, Signal also &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;signalapp&#x2F;libsignal&#x2F;blob&#x2F;12d487ffb94c9542c005082efd92b7a0926b9f5d&#x2F;rust&#x2F;protocol&#x2F;src&#x2F;protocol.rs#L74&quot;&gt;uses 64-bit message authentication tags&lt;&#x2F;a&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;The &quot;Miscellaneous Issues&quot; are a mix of UX mechanisms being misinterpreted as cryptographic checks (e.g. the CheckCode) and observations without demonstrated security impact.&lt;&#x2F;li&gt;
&lt;li&gt;In summary, we believe the post does not describe any practically exploitable vulnerabilities.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The central claim of the blog post is that an attacker can read Matrix users&#x27; conversations. That claim requires an attacker to cause two honest clients to derive the same predictable session key. The post does not demonstrate a path to achieve this under Matrix&#x27;s authenticated key distribution model.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;issue-analysis&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#issue-analysis&quot; aria-label=&quot;Anchor link for: issue-analysis&quot;&gt;🔗&lt;&#x2F;a&gt;Issue analysis&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;olm-diffie-hellman-accepts-the-identity-element&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#olm-diffie-hellman-accepts-the-identity-element&quot; aria-label=&quot;Anchor link for: olm-diffie-hellman-accepts-the-identity-element&quot;&gt;🔗&lt;&#x2F;a&gt;Olm Diffie-Hellman Accepts the Identity Element&lt;&#x2F;h3&gt;
&lt;p&gt;The claim in the title is accurate and not disputed (with some imprecision in terminology: the all-zero Montgomery &lt;code&gt;u&lt;&#x2F;code&gt; encoding does not represent the curve&#x27;s identity element). vodozemac&#x27;s X25519 Diffie-Hellman method does not currently reject computations involving the all-zero input nor indeed any of the small-order subgroup elements, neither via direct validation of the input points nor via the rejection of the all-zero Diffie-Hellman output.&lt;&#x2F;p&gt;
&lt;p&gt;What we dispute is the later impact claim, that this leads to a complete loss of Olm and Matrix room confidentiality. That conclusion does not follow under Matrix&#x27;s authenticated key distribution model.&lt;&#x2F;p&gt;
&lt;p&gt;The core claim is that an attacker can cause both parties to derive a predictable session key by introducing a low-order public key input into the 3DH computation.&lt;&#x2F;p&gt;
&lt;p&gt;In Olm&#x27;s 3DH, the session key is derived from three Diffie-Hellman outputs:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;DH(ia, EB)&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;DH(ea, IB)&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;code&gt;DH(ea, EB)&lt;&#x2F;code&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;where &lt;code&gt;ia&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;IB&lt;&#x2F;code&gt; are long-term identity keys and &lt;code&gt;ea&lt;&#x2F;code&gt;&#x2F;&lt;code&gt;EB&lt;&#x2F;code&gt; are pre-keys. Lowercase denotes private keys; uppercase denotes public keys.&lt;&#x2F;p&gt;
&lt;p&gt;For an attacker Mallory to force a predictable session key known to her, she must cause both Alice and Bob to derive identical, attacker-controlled outputs for all three DH computations.&lt;&#x2F;p&gt;
&lt;p&gt;In Matrix, the identity key and pre-keys are authenticated via signatures from the device&#x27;s long-term Ed25519 identity key. Clients verify these signatures before establishing a session. Therefore, a network attacker cannot substitute low-order public keys for those inputs.&lt;&#x2F;p&gt;
&lt;p&gt;Consequently, under Matrix&#x27;s authenticated key distribution model, the described behavior does not yield a confidentiality break between two honest clients.&lt;&#x2F;p&gt;
&lt;p&gt;That said, in our brief correspondence with the reporter, after outlining our position and asking for clarification or a sketch of an actual attack, we agreed to add the check as a defence-in-depth and to preempt future doubt about whether this is a vulnerability. We also noted the possibility of vodozemac being used outside the context of Matrix, acknowledging this should at the very least be documented. We did not receive further technical clarification before publication.&lt;&#x2F;p&gt;
&lt;p&gt;The post argues that references to RFC 7748 and Trevor Perrin are misplaced because they concern the Diffie-Hellman primitive rather than protocols. We disagree with this reading. RFC 7748 makes the all-zero output check optional at the primitive level and explicitly notes that protocol designers must consider whether contributory behavior is required. Perrin&#x27;s discussion similarly distinguishes between &quot;safe&quot; and &quot;unsafe&quot; DH protocols, defining safe protocols as those that authenticate peer keys before use. Notably, even Signal &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;signalapp&#x2F;libsignal&#x2F;commit&#x2F;dce9c0d30a833448b605eda987844a5834b309c3&quot;&gt;only recently&lt;&#x2F;a&gt; added an explicit all-zero X25519 output check, about a week prior to this post.&lt;&#x2F;p&gt;
&lt;p&gt;Matrix&#x27;s Olm handshake authenticates identity keys and pre-keys via device signatures prior to session establishment. In that context, contributory behavior is not relied upon for protection against active network attackers.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;downgrade-attacks-from-v2-to-v1&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#downgrade-attacks-from-v2-to-v1&quot; aria-label=&quot;Anchor link for: downgrade-attacks-from-v2-to-v1&quot;&gt;🔗&lt;&#x2F;a&gt;Downgrade Attacks From V2 to V1&lt;&#x2F;h3&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;v1.17&#x2F;olm-megolm&#x2F;olm&#x2F;#version-1&quot;&gt;Olm V1&lt;&#x2F;a&gt; is the only currently specified Olm version. The Olm V2 implementation in vodozemac is an experimental implementation of an anticipated future version that has not yet been specified. Given that there is only one standardised version, downgrades are not a current concern and we have not attempted to guard against them. Version negotiation and downgrade resistance become relevant once multiple versions are specified and deployed.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;ecies-checkcode-has-only-100-possible-values&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#ecies-checkcode-has-only-100-possible-values&quot; aria-label=&quot;Anchor link for: ecies-checkcode-has-only-100-possible-values&quot;&gt;🔗&lt;&#x2F;a&gt;ECIES CheckCode Has Only 100 Possible Values&lt;&#x2F;h3&gt;
&lt;p&gt;The claims in this section stem from a misunderstanding of the purpose of the check code, which is purely a UX feature, not a cryptographic check.&lt;&#x2F;p&gt;
&lt;p&gt;Since the security of QR code login relies on the user correctly confirming on their secondary device that their primary device is signalling success, we thought it would be unwise to simply ask the user about this in yes&#x2F;no form. Such a design would carry too large of a risk that the user will simply click through without understanding what is asked.&lt;&#x2F;p&gt;
&lt;p&gt;The check code serves as an action requiring higher engagement from the user, slowing them down and forcing them to replicate what they see. The actual information being transferred is only a single bit: success or failure. The slight bias in the digits is therefore irrelevant.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;message-keys-silently-dropped-after-max-message-bytes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#message-keys-silently-dropped-after-max-message-bytes&quot; aria-label=&quot;Anchor link for: message-keys-silently-dropped-after-max-message-bytes&quot;&gt;🔗&lt;&#x2F;a&gt;Message Keys Silently Dropped After &lt;code&gt;MAX_MESSAGE_BYTES&lt;&#x2F;code&gt;&lt;&#x2F;h3&gt;
&lt;blockquote&gt;
&lt;p&gt;Vodozemac hard-codes a constant, &lt;code&gt;MAX_MESSAGE_BYTES&lt;&#x2F;code&gt; to equal 40. After more than 40 skipped messaged keys are buffered, any additional keys are silently discarded, making corresponding messages permanently undecryptable.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;The constant referred to in the post as &lt;code&gt;MAX_MESSAGE_BYTES&lt;&#x2F;code&gt; is in fact &lt;code&gt;MAX_MESSAGE_KEYS&lt;&#x2F;code&gt;. This number controls the largest difference in message indices that can be successfully received out-of-order within a given receiving chain. So for example, if one side sends 50 messages in a row, before receiving any message from the other side, and these messages arrive significantly out of order, such that message 49 arrives first, then we will fail to decrypt message 2, but will still be able to decrypt message 50. The number was chosen empirically, based on typical network conditions. This is not a significant source of undecryptable messages.&lt;&#x2F;p&gt;
&lt;p&gt;Similarly, &lt;code&gt;MAX_MESSAGE_GAP = 2000&lt;&#x2F;code&gt; is a hard limit on the message index jump that we will even attempt to decrypt, and again chosen empirically. For example, if we receive message 1 and then message 2100, we will refuse to decrypt it since it is deemed to be too large of a jump at once.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;pickle-format-uses-deterministic-iv&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#pickle-format-uses-deterministic-iv&quot; aria-label=&quot;Anchor link for: pickle-format-uses-deterministic-iv&quot;&gt;🔗&lt;&#x2F;a&gt;Pickle Format Uses Deterministic IV&lt;&#x2F;h3&gt;
&lt;p&gt;As noted by the reporter, this is merely a sharp edge in the API to support legacy pickles and has no security impact. Client applications only ever use this key to encrypt a single pickle and never reuse it.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;cfg-fuzzing-bypasses-mac-and-signature-verification&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#cfg-fuzzing-bypasses-mac-and-signature-verification&quot; aria-label=&quot;Anchor link for: cfg-fuzzing-bypasses-mac-and-signature-verification&quot;&gt;🔗&lt;&#x2F;a&gt;&lt;code&gt;#[cfg(fuzzing)]&lt;&#x2F;code&gt; Bypasses MAC and Signature Verification&lt;&#x2F;h3&gt;
&lt;p&gt;This has already been retracted by the reporter.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;strict-ed25519-verification-is-disabled-by-default&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#strict-ed25519-verification-is-disabled-by-default&quot; aria-label=&quot;Anchor link for: strict-ed25519-verification-is-disabled-by-default&quot;&gt;🔗&lt;&#x2F;a&gt;Strict Ed25519 Verification is Disabled By Default&lt;&#x2F;h3&gt;
&lt;p&gt;This is a trade-off between compatibility and additional protection from signature malleability, which in our usage does not lead to a practical exploit scenario. The reason it&#x27;s a compatibility trade-off is that RFC 8032, the EdDSA RFC, specifies a looser validation than &lt;code&gt;ed25519-dalek&lt;&#x2F;code&gt;&#x27;s &lt;code&gt;strict-signatures&lt;&#x2F;code&gt;. See point 3 in &lt;a href=&quot;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;rfc8032#section-5.1.7&quot;&gt;https:&#x2F;&#x2F;datatracker.ietf.org&#x2F;doc&#x2F;html&#x2F;rfc8032#section-5.1.7&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The reporter did not report this finding in his latest report, but when he did in 2024, we asked what attack scenario he had in mind. In &lt;a href=&quot;https:&#x2F;&#x2F;soatok.blog&#x2F;2024&#x2F;08&#x2F;14&#x2F;security-issues-in-matrixs-olm-library&#x2F;#vuln-ed25519&amp;amp;:~:text=no-impact%20finding&quot;&gt;his own words&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;This is almost certainly a no-impact finding (or low-impact at worst), but still an annoying one to see in 2024.&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;If any new information to the contrary has come to light, we are open to reevaluating this.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;on-the-timeline&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#on-the-timeline&quot; aria-label=&quot;Anchor link for: on-the-timeline&quot;&gt;🔗&lt;&#x2F;a&gt;On the timeline&lt;&#x2F;h2&gt;
&lt;p&gt;In his timeline, the reporter notes:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;2026-02-17: I respond to Matrix.org with an additional PoC, a patch, and express disagreement with their reasoning&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
&lt;p&gt;We did not receive the referenced additional response prior to publication of the reporter&#x27;s blog post. Our response was sent at 22:19 UTC while the blog post was published no later than 23:47 UTC.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Updated 2026-02-21&lt;&#x2F;strong&gt;: The referenced response, sent at 23:28 UTC, was discovered to have been caught by a spam filter. Thanks to Gnuxie for working with us and the reporter to resolve this.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;closing-words&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#closing-words&quot; aria-label=&quot;Anchor link for: closing-words&quot;&gt;🔗&lt;&#x2F;a&gt;Closing words&lt;&#x2F;h2&gt;
&lt;p&gt;In summary, Matrix&#x27;s threat model relies on authenticated key distribution: identity keys and pre-keys are signed by device keys and verified prior to session establishment. This prevents a network adversary from substituting non-contributory public keys to force a predictable shared secret between honest clients. The absence of an all-zero check does not compromise this.&lt;&#x2F;p&gt;
&lt;p&gt;It&#x27;s worth saying that in our private correspondence with the reporter we agreed to add the check as a defence-in-depth and to remove any doubt of whether this constitutes a vulnerability. The check will be added in a future vodozemac release.&lt;&#x2F;p&gt;
&lt;p&gt;We regret that the public post was published without engaging on the technical questions we raised. Coordinated disclosure works best when both parties explore exploitability in good faith.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;reply-to-the-reporter&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#reply-to-the-reporter&quot; aria-label=&quot;Anchor link for: reply-to-the-reporter&quot;&gt;🔗&lt;&#x2F;a&gt;Reply to the reporter&lt;&#x2F;h2&gt;
&lt;p&gt;Attached below is our verbatim response to the reporter, which was sent shortly before the publication of their blog post:&lt;&#x2F;p&gt;
&lt;blockquote&gt;
&lt;p&gt;Hi Soatok,&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;ve now completed our assessment of your report. Taking each issue in turn:&lt;&#x2F;p&gt;
&lt;ol&gt;
&lt;li&gt;Olm mishandles the identity element&lt;&#x2F;li&gt;
&lt;&#x2F;ol&gt;
&lt;p&gt;Your PoC correctly demonstrates that the Olm 3DH implementation in vodozemac does not currently perform the all-zero DH output check. As we&#x27;re sure you&#x27;re aware, the check for contributory behaviour in X25519 is a contentious topic among cryptographers, with some calling for it, but others like RFC 7748&lt;a href=&quot;https:&#x2F;&#x2F;www.rfc-editor.org&#x2F;rfc&#x2F;rfc7748&quot;&gt;1&lt;&#x2F;a&gt; calling it optional or even arguing against it (e.g. Trevor Perrin&lt;a href=&quot;https:&#x2F;&#x2F;moderncrypto.org&#x2F;mail-archive&#x2F;curves&#x2F;2017&#x2F;000896.html&quot;&gt;2&lt;&#x2F;a&gt;). We&#x27;ve previously considered adding it but ultimately avoided it due to the conclusion that there&#x27;s no practical security impact on Matrix. In other places like SAS&#x2F;ECIES we explicitly reject non-contributory outputs because those handshakes can be used in unauthenticated contexts where an all-zero DH output &lt;em&gt;could&lt;&#x2F;em&gt; directly collapse channel security.&lt;&#x2F;p&gt;
&lt;p&gt;To sketch out an argument, it&#x27;s helpful to consider two possible cases of where it might matter. One, an active attacker, Mallory, trying to manipulate a handshake between two honest parties Alice and Bob. Two, a dishonest participant, Malice, taking the place of Bob.&lt;&#x2F;p&gt;
&lt;p&gt;In the first case, the handshake is protected from Mallory on the Matrix level, by the fact that Matrix requires all key inputs used in the Olm 3DH handshake (except for the &quot;base key&quot;) be signed by the long-term Ed25519 identity keys of the participants. Inbound session establishment is only accepted when the sender identity key matches a signature-verified device key for the claimed sender, and outbound uses signature-verified key bundles.&lt;&#x2F;p&gt;
&lt;p&gt;Thus, a third party like Mallory cannot replace any of the bundle keys (the X25519 identity key or the signed pre-key, be it an OTK or the fallback key). The only key that can be replaced is the base key Ea (i.e. Alice&#x27;s ephemeral &quot;base&quot; key, assuming Alice is the one opening a channel with Bob) which, if replaced with a small order subgroup element, would result in an all-zero DH(Ib, Ea) output on Bob&#x27;s side. But even then, the attacker cannot influence the corresponding term on Alice&#x27;s side, so Alice and Bob would still derive different shared secrets and therefore the session would not be viable.&lt;&#x2F;p&gt;
&lt;p&gt;The second case is outside our threat model, given that Malice doesn&#x27;t gain any additional advantage from using this attack compared to the things she can already do by virtue of being one of the conversation endpoints.&lt;&#x2F;p&gt;
&lt;p&gt;We believe this covers all threat scenarios relevant for Matrix. If our reasoning is flawed and you see a practical attack, can you please sketch it out?&lt;&#x2F;p&gt;
&lt;p&gt;That said, given that vodozemac could potentially be used outside the context of Matrix, we will consider adding the all-zero DH output rejection check in the 3DH path as a defence-in-depth. As a nice side effect, this stops further confusion on whether this is an issue and makes X25519 handling consistent across the entire crate. At the very least, the behaviour should be documented so the user can make an informed decision.&lt;&#x2F;p&gt;
&lt;p&gt;2, 3, and 4. Olm v1 vs v2&lt;&#x2F;p&gt;
&lt;p&gt;Olm v1 is the version of the protocol currently standardised by the Matrix specification. Olm v2 is a planned future upgrade that hasn&#x27;t yet gone through the specification process. The implementation in vodozemac is there so that we are ready for when it does.&lt;&#x2F;p&gt;
&lt;p&gt;That there is no configuration knob for controlling the required version via policy is a fair observation. We are already aware of this and are planning to add such a mechanism once Olm v2 is specced and deployed. Given this, vodozemac defaulting on v1 is intentional.&lt;&#x2F;p&gt;
&lt;p&gt;Regarding specifically the pickle downgrade attack, there is no version of vodozemac that supports v2 sessions that also omits the config field from the &lt;code&gt;SessionPickle&lt;&#x2F;code&gt;, so a v2 session pickle without a config field cannot arise in an honest setting. It could be constructed maliciously, but what would the attacker gain from this? Once a future version of vodozemac supports policy-enforced minimal session versions, we will consider dropping support for old pickles without a config field and may start rejecting them.&lt;&#x2F;p&gt;
&lt;hr &#x2F;&gt;
&lt;p&gt;In terms of timelines, we follow coordinated disclosure because fixes in the Matrix ecosystem often require changes across multiple implementations and release cycles. We disagree with the characterisation that the response time for your last report was &quot;squandered&quot;. In general, we ask reporters to follow our Security Disclosure Policy.&lt;&#x2F;p&gt;
&lt;p&gt;That said, based on our current assessment, we do not believe the issues described have a practical security impact for Matrix deployments. We are therefore not requesting an extension and we do not object to publication on 2026-02-18.&lt;&#x2F;p&gt;
&lt;p&gt;However, if you believe your report does result in a concrete high-severity attack on Matrix, please share a brief attack sketch (attacker capabilities, prerequisites, and expected impact). If that changes the severity assessment, we will prioritize a fix and coordinate an ecosystem release accordingly.&lt;&#x2F;p&gt;
&lt;p&gt;Once again, we thank you for your continued research of the Matrix protocol and software stack.&lt;&#x2F;p&gt;
&lt;p&gt;Best regards,&lt;&#x2F;p&gt;
&lt;p&gt;Matrix.org Security Team&lt;&#x2F;p&gt;
&lt;&#x2F;blockquote&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Project Hydra: Improving state resolution in Matrix</title>
    <published>2025-08-14T00:00:00+00:00</published>
    <updated>2025-08-14T00:00:00+00:00</updated>
    <author>
      <name>Kegan Dougal</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2025/08/project-hydra-improving-state-res/" type="text/html"/>
    <id>https://matrix.org/blog/2025/08/project-hydra-improving-state-res/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;On July 16th 2025 we issued a &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2025&#x2F;07&#x2F;security-predisclosure&#x2F;&quot;&gt;pre-disclosure&lt;&#x2F;a&gt; for vulnerabilities in the federation protocol, and &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2025&#x2F;08&#x2F;security-release&#x2F;&quot;&gt;announced new releases&lt;&#x2F;a&gt; of Matrix homeservers on Mon August 11. Today we are ending the embargo and disclosing the remaining MSCs. This post will go into more detail about the changes and what led up to them.&lt;&#x2F;p&gt;
&lt;p&gt;This project has the codename “Hydra” and is an ongoing exercise in improving the security of the federation protocol. Given the security-sensitive nature of this work, it was done under embargo by the backend team at Element, the Matrix.org Security Team, the Spec Core Team, alongside Timo Kösters (who privately reported a related vulnerability, helping jumpstart the project) and Florian Jacob (at Karlsruher Institut für Technologie). The work was subsequently shared, reviewed and MSC’d under embargo with maintainers of all known Matrix homeserver implementations which implement State Resolution 2.0 on June 13th, so they could prepare for the coordinated release on August 11. We have then given server admins 3 more days to upgrade before lifting the embargo and disclosing the vulnerability details here.&lt;&#x2F;p&gt;
&lt;p&gt;This entire process has been highly unusual for the ecosystem, and it’s unfortunate that we were unable to make these changes out in the open. Where possible, we moved to release redacted versions of the MSCs as soon as we were comfortable from a security perspective (e.g. releasing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt; ahead of time, with redacted sections). Furthermore, we’d like to apologise for the disruption in landing a new stable room version and specification release with immediate effect rather than allowing for a period of public review. Going forwards, normal MSC work will continue in public as it ever has, along with normal on-cycle specification releases.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;key-information&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#key-information&quot; aria-label=&quot;Anchor link for: key-information&quot;&gt;🔗&lt;&#x2F;a&gt;Key Information&lt;&#x2F;h2&gt;
&lt;p&gt;The MSCs added under embargo were:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt;: Explicitly privilege room creators&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt;: Room IDs as hashes of the create event, which resolves &lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2025-54315&quot;&gt;CVE-2025-54315&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4297&quot;&gt;MSC4297&lt;&#x2F;a&gt;: State Resolution v2.1, which resolves &lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2025-49090&quot;&gt;CVE-2025-49090&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4304&quot;&gt;MSC4304&lt;&#x2F;a&gt;: Room Version 12&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Supporting these MSCs are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Server-agnostic &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;complement&#x2F;blob&#x2F;dd9b896fead36504c97e35456fe3c0e09fc7328d&#x2F;tests&#x2F;v12_test.go&quot;&gt;Complement tests&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec&#x2F;pull&#x2F;2193&quot;&gt;The specification PR introducing room version 12&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;docs&#x2F;spec-guides&#x2F;state-res-2.1&#x2F;&quot;&gt;The implementor’s guide to State Res 2.1&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;docs&#x2F;spec-guides&#x2F;creator-power-level&#x2F;&quot;&gt;Creator power level in room version 12&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;These changes fixed the following vulnerabilities:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2025-49090&quot;&gt;CVE-2025-49090&lt;&#x2F;a&gt;: The Matrix State Resolution algorithm before version 2.1 exhibits undesirable behavior in certain edge conditions, resulting in state resets: the scenario of a room&#x27;s state resetting to an earlier or incorrect state in the absence of revocation events that would validly result in that state. This allows a malicious participating homeserver to potentially corrupt a room&#x27;s state by sending a crafted sequence of Matrix events and API responses. Room version 12 resolves the issue by switching to State Resolution v2.1&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2025-54315&quot;&gt;CVE-2025-54315&lt;&#x2F;a&gt;: Matrix rooms before version 12 do not strongly (i.e. cryptographically) enforce the uniqueness of a room&#x27;s creation event. While mitigating mechanisms exist which prevent exploitation of the issue in practice, this is a protocol soundness issue. Matrix room version 12 fixes this by making the room ID equal to the hash of the room&#x27;s creation event.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h2 id=&quot;impact&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#impact&quot; aria-label=&quot;Anchor link for: impact&quot;&gt;🔗&lt;&#x2F;a&gt;Impact&lt;&#x2F;h2&gt;
&lt;p&gt;These issues only affect servers which are federating with untrusted or potentially malicious servers, such as participating in the public Matrix network.  Servers which are not federated, or which federate in private trusted networks such as BwMessenger, Tchap or TI-Messenger are not affected.&lt;&#x2F;p&gt;
&lt;p&gt;The impact of these issues is rated as ‘high’ rather than ‘critical’ as they do not result in data compromise or exposure. Instead, the risk here is of a malicious homeserver operator corrupting the chatroom’s state by resetting it to a prior value (e.g. reverting access control or room membership to an earlier configuration). This does &lt;strong&gt;not&lt;&#x2F;strong&gt; expose conversation history nor any additional data.
We are not aware of these issues being exploited, but would recommend server admins to upgrade immediately if they are operating rooms with users participating from untrusted servers, as per &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2025&#x2F;08&#x2F;security-release&#x2F;&quot;&gt;Monday’s announcement&lt;&#x2F;a&gt;. Room admins should then upgrade such rooms to version 12 to guard against these attacks in future - see the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;docs&#x2F;communities&#x2F;administration&#x2F;#room-upgrades&quot;&gt;new room upgrade guide&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;summary-of-changes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#summary-of-changes&quot; aria-label=&quot;Anchor link for: summary-of-changes&quot;&gt;🔗&lt;&#x2F;a&gt;Summary of changes&lt;&#x2F;h2&gt;
&lt;p&gt;This project has resulted in four new Matrix Spec Change proposals to the protocol. At high level, these are:&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt;: “Explicitly privilege room creators”. This makes explicit the fact that room creators have &#x27;infinite&#x27; power level. The reason we&#x27;ve done this is because in practice the creator’s server can already effectively control a room by backdating events: access control requires a hierarchy, and the creator is at the top of this hierarchy.  This also adds the concept of multiple creators, to avoid control of rooms being centralised on a single server, and to support rooms where ownership genuinely needs to be shared between multiple users (e.g. DMs).  It’s worth noting this does &lt;em&gt;not&lt;&#x2F;em&gt; impact decentralisation – the creators can still sit on multiple servers, and the room itself is replicated equally over participating servers.  Instead, it’s just recognising that access control requires someone to be at the top of the hierarchy, and that person is the room creator.  Separately, we’re looking at approaches to prevent backdating in general by adding ‘finality’ to Matrix.&lt;&#x2F;p&gt;
&lt;p&gt;This MSC also solves the &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec&#x2F;issues&#x2F;165&quot;&gt;age-old problem&lt;&#x2F;a&gt; where admins could lose control of their own rooms by promoting other users to admin or demoting themselves: now, the creator can always fix such situations. If creators go rogue or disappear, the solution is to establish a new creator by either upgrading the room or creating a new one. Given whoever upgrades a room becomes its new creator, we&#x27;ve changed the default power level needed to upgrade a room to be 150, referred to as &#x27;owner&#x27; power level. This allows the room creator to effectively delegate permission to upgrade the room (and so become the new creator) to specific admins by explicitly giving them power level 150.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt;: “Room IDs as hashes of the create event”. This changes the format of room IDs so that they are literally the same as the event ID of the create event. This is a precautionary measure to prevent a potential theoretical class of attacks where malicious server admins could try to introduce false m.room.create events into a room in order to hijack it.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4297&quot;&gt;MSC4297&lt;&#x2F;a&gt;: “State Resolution v2.1”.  This is an incremental change over the current State Resolution 2.0 algorithm, which protects against various classes of &#x27;state resets&#x27;, where delayed federation traffic could cause key-value state associated with a room to revert to an earlier state. This caused symptoms such as users being re-added into a room they have left, or the server no longer recognising users as being present in a room, or access control resetting to a previous state. The new algorithm works by changing the starting state on top of which conflicting events are replayed and it replays more events than previously (replaying not just the conflicted events but all the events in between any two conflicted events—the conflicted state subgraph). This fixes state resets observed in the rooms including: #rust, the Office of the Matrix.org Foundation, the TWIM room, Techlore and Furrytech.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4304&quot;&gt;MSC4304&lt;&#x2F;a&gt;: “Room Version 12”. This simply defines the combination of the previous 3 MSCs as room version 12.&lt;&#x2F;p&gt;
&lt;p&gt;For full technical details, please read the actual MSCs: &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4297&quot;&gt;MSC4297&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4304&quot;&gt;MSC4304&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;history&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#history&quot; aria-label=&quot;Anchor link for: history&quot;&gt;🔗&lt;&#x2F;a&gt;History&lt;&#x2F;h2&gt;
&lt;p&gt;Matrix optimistically applies changes to room state without waiting for all servers to achieve consensus. This means that sometimes servers will update the room state (e.g. modify the room name) while concurrently, they lose their permission to set said room state (e.g. the user changing the room name is banned). When this happens, the room name change gets rolled back to its previous value. Counterintuitively this can happen even when there is no specific event that causes the user to lose their permission to set room state. This unexpected class of rollbacks is called a “state reset”.&lt;&#x2F;p&gt;
&lt;p&gt;Work on fixing known cases of state resets in the current State Resolution 2.0 algorithm began in 2022 when &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;DMRobertson&quot;&gt;David Robertson&lt;&#x2F;a&gt; on Element’s backend team investigated known occurrences of the problem that were happening on the public network. He made good progress on identifying the root causes of these occurrences, resulting in the State Resolution v2.1 algorithm. Unfortunately, &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;12&#x2F;25&#x2F;the-matrix-holiday-update-2023&#x2F;&quot;&gt;lack of funding&lt;&#x2F;a&gt; meant work had to be paused. (N.B. if your organisation is operationally dependent on Matrix’s security, &lt;strong&gt;please&lt;&#x2F;strong&gt; contribute financially by &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;support&#x2F;&quot;&gt;joining the Foundation as a member&lt;&#x2F;a&gt; in order to fund security work like this.)&lt;&#x2F;p&gt;
&lt;p&gt;The project was then resumed at the end of 2024 as part of a general security review by Element’s backend team and the Matrix Foundation security team which ultimately resulted in &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4297&quot;&gt;MSC4297&lt;&#x2F;a&gt;. Broadly speaking, State Resolution v2.1 makes two changes: it changes the starting state on top of which conflicting events are replayed and it replays more events than previously (replaying not just the conflicted events but all the events in between any two conflicted events—the &lt;em&gt;conflicted state subgraph&lt;&#x2F;em&gt;). This fixes state resets observed in public rooms including: #rust, the Office of the Matrix.org Foundation, the TWIM room, Techlore and Furrytech.&lt;&#x2F;p&gt;
&lt;p&gt;This work coincided with Timo Kösters highlighting an issue to &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt; that the room creator always has had complete power over the room and dominates other admins. This works even if the creator had left the room or gave away their admin permissions in the past. This spurred the creation of &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt; which formally acknowledges the power that creators have over every other member in the room. We’d like to thank Timo for reporting these points to &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt; and we will be adding him to the Security Hall of Fame.&lt;&#x2F;p&gt;
&lt;p&gt;The security review also brought to light another potentially serious vulnerability in the federation protocol. Our on-paper analysis suggested it may be possible to replace the create event in the room. If so, this would have grave consequences as all permissions in the room are derived from the create event.&lt;&#x2F;p&gt;
&lt;p&gt;However, when we tried to reproduce the vulnerability in real implementations we found that they were not vulnerable due to the way those implementations handled rejected events. Nevertheless, the protocol was missing a strong guarantee that there can never be multiple create events for the same room. This was sufficiently worrying as a soundness issue to warrant fixing, and so &lt;a href=&quot;http:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt; was created to guarantee that each room has exactly one immutable create event.&lt;&#x2F;p&gt;
&lt;p&gt;We took the unusual decision to embargo these MSCs due to risk of exploitation, taking each in turn:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt;: The risk of a room created by a user on a server that is no longer trusted, using their creator powers to disrupt the room&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt;: The risk of an unknown vector allowing multiple create events to be accepted into a room, allowing rooms to be taken over.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4297&quot;&gt;MSC4297&lt;&#x2F;a&gt;: The risk of manipulation of the federation re-sync mechanism allowing state resets to be intentionally triggered.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;These MSCs were reviewed under embargo by the SCT and server implementors, and passed final comment period for merge. These MSCs are bundled up into &lt;a href=&quot;https:&#x2F;&#x2F;spec.matrix.org&#x2F;unstable&#x2F;rooms&#x2F;v12&#x2F;&quot;&gt;room version 12&lt;&#x2F;a&gt;, expected to be released formally in Matrix 1.16 later this month.&lt;&#x2F;p&gt;
&lt;p&gt;This work fixes the most common set of state resets we’ve seen in the wild, although we’re continuing work on Hydra. We’ll be doing as much of this work as possible in the open to minimise any future embargoes. We’d like to thank all the server implementors (&lt;a href=&quot;https:&#x2F;&#x2F;conduit.rs&#x2F;&quot;&gt;Conduit&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;continuwuity.org&#x2F;&quot;&gt;Continuwuity&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;www.ejabberd.im&#x2F;index.html&quot;&gt;ejabberd&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;element-hq.github.io&#x2F;dendrite&#x2F;&quot;&gt;Dendrite&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;www.rocket.chat&#x2F;&quot;&gt;Rocket.chat&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;element-hq&#x2F;synapse&quot;&gt;Synapse&lt;&#x2F;a&gt;, &lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;server-suite&#x2F;synapse-pro&quot;&gt;Synapse Pro&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-construct&#x2F;tuwunel&quot;&gt;Tuwunel&lt;&#x2F;a&gt;) who took the time to make these changes at such short notice.&lt;&#x2F;p&gt;
&lt;p&gt;We’d also like to thank the client&#x2F;bot&#x2F;bridge implementors for accommodating the client-side breaking changes introduced in room version 12, particularly around the new power level semantics and room ID format change.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we’d like to thank the community at large, particularly those who have been disrupted and have had to upgrade rooms in response to this work. Thanks all for your patience, and we look forward to a talk all about this at the &lt;a href=&quot;https:&#x2F;&#x2F;conference.matrix.org&#x2F;&quot;&gt;Matrix Conference&lt;&#x2F;a&gt; in October!&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security Release</title>
    <published>2025-08-11T00:00:00+00:00</published>
    <updated>2025-08-11T00:00:00+00:00</updated>
    <author>
      <name>Jim Mackenzie, VP Trust &amp; Safety — The Matrix.org Foundation</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2025/08/security-release/" type="text/html"/>
    <id>https://matrix.org/blog/2025/08/security-release/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;Last month we issued a &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2025&#x2F;07&#x2F;security-predisclosure&#x2F;&quot;&gt;Pre-disclosure: Upcoming coordinated security fix for all Matrix server implementations&lt;&#x2F;a&gt;, describing a coordinated release to fix two high severity protocol vulnerabilities (CVE-2025-49090; the other not yet allocated a CVE). That release is now available as of 17:00 UTC on August 11, 2025. Server updates are now available, and MSCs &amp;amp; spec updates will follow on Thursday, August 14, 2025, bringing us to version 1.16 of the spec later in the month, and introducing room version 12.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;&lt;h2 id=&quot;what-is-changing&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-is-changing&quot; aria-label=&quot;Anchor link for: what-is-changing&quot;&gt;🔗&lt;&#x2F;a&gt;What is changing?&lt;&#x2F;h2&gt;
&lt;p&gt;Room version 12 includes some changes to the semantics for room creators. Room creators are now privileged over other users in the room as of &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4289&quot;&gt;MSC4289&lt;&#x2F;a&gt;. There is also a new &lt;code&gt;additional_creators&lt;&#x2F;code&gt; field in the &lt;code&gt;m.room.create&lt;&#x2F;code&gt; event for a room.&lt;&#x2F;p&gt;
&lt;p&gt;The default power level in room version 12 for sending &lt;code&gt;m.room.tombstone&lt;&#x2F;code&gt; events to upgrade rooms is now 150. This stops normal admins from upgrading the room (and so assuming creator privileges) - instead, a creator has to explicitly boost an admin&#x27;s power level to 150 in order to let them upgrade the room and effectively assume creator rights going forwards.&lt;&#x2F;p&gt;
&lt;p&gt;Room IDs are now hashes of the &lt;code&gt;m.room.create&lt;&#x2F;code&gt; event via &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;4291&quot;&gt;MSC4291&lt;&#x2F;a&gt;. This changes the format of the room ID that you are used to seeing, and your Matrix client will need to be updated to handle this new format.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;what-do-i-need-to-do&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#what-do-i-need-to-do&quot; aria-label=&quot;Anchor link for: what-do-i-need-to-do&quot;&gt;🔗&lt;&#x2F;a&gt;What do I need to do?&lt;&#x2F;h2&gt;
&lt;h3 id=&quot;as-a-matrix-user&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#as-a-matrix-user&quot; aria-label=&quot;Anchor link for: as-a-matrix-user&quot;&gt;🔗&lt;&#x2F;a&gt;As a Matrix user&lt;&#x2F;h3&gt;
&lt;p&gt;Upgrade your client to the latest version, making sure that it supports room version 12. Check your client’s upgrade notes or documentation for information on room version 12 support.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;as-a-matrix-server-administrator&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#as-a-matrix-server-administrator&quot; aria-label=&quot;Anchor link for: as-a-matrix-server-administrator&quot;&gt;🔗&lt;&#x2F;a&gt;As a Matrix server administrator&lt;&#x2F;h3&gt;
&lt;p&gt;Upgrade your server software to the latest version, making sure that it supports room version 12. The following implementations are releasing fixes shortly as part of this coordinated update:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;conduit.rs&#x2F;&quot;&gt;Conduit&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;continuwuity.org&#x2F;&quot;&gt;Continuwuity&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.ejabberd.im&#x2F;index.html&quot;&gt;ejabberd&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;element-hq.github.io&#x2F;dendrite&#x2F;&quot;&gt;Dendrite&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;www.rocket.chat&#x2F;&quot;&gt;Rocket.chat&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;element-hq&#x2F;synapse&quot;&gt;Synapse&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;element.io&#x2F;server-suite&#x2F;synapse-pro&quot;&gt;Synapse Pro&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-construct&#x2F;tuwunel&quot;&gt;Tuwunel&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;For questions around these implementations, please visit their respective support rooms.&lt;&#x2F;p&gt;
&lt;p&gt;Note: Whether or not you need to apply the security updates depends on your homeserver configuration:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;em&gt;Single instance, unfederated homeserver&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
You are running a single instance of a Matrix homeserver, and federation is disabled. There is nothing you need to do urgently.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Homeservers operating in a restricted federation&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
Your server(s) are running as part of a restricted federation - i.e. you have mechanisms in place (homeserver configuration, network restrictions etc) that limit which other homeservers your homeservers can talk to.
&lt;ul&gt;
&lt;li&gt;If you &lt;em&gt;fully trust&lt;&#x2F;em&gt; all of the homeservers in this restricted federation then there is nothing you need to do urgently.&lt;&#x2F;li&gt;
&lt;li&gt;If you &lt;em&gt;do not fully trust&lt;&#x2F;em&gt; all of the homeservers in this restricted federation (e.g. if they are run by partners outside of your direct span of control), you should update your server as soon as possible.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;em&gt;Homeservers participating in open, unrestricted federation&lt;&#x2F;em&gt;&lt;br &#x2F;&gt;
If your server is participating in an open federation, you should update your server as soon as possible.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;as-a-room-owner-or-community&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#as-a-room-owner-or-community&quot; aria-label=&quot;Anchor link for: as-a-room-owner-or-community&quot;&gt;🔗&lt;&#x2F;a&gt;As a room owner or community&lt;&#x2F;h3&gt;
&lt;p&gt;If your rooms or spaces federate with untrusted servers, you should &lt;strong&gt;plan&lt;&#x2F;strong&gt; to upgrade your rooms to room version 12. The urgency of this upgrade may depend on your community’s readiness for the changes. At the Foundation, we are aiming to upgrade our rooms in September 2025. There needs to be enough time to allow clients and servers participating in your room to support version 12 &lt;em&gt;before upgrading your room&lt;&#x2F;em&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The new version includes some changes to room creator semantics, which means that choosing which user performs the upgrade needs some careful thought. Using a long-lived, trusted account, such as a moderation bot account, is advised. For more detailed advice, two of the Foundation Governing Board working groups — the Trust &amp;amp; Safety Research &amp;amp; Development Working Group, and the Website &amp;amp; Content Working Group — have collaborated on a guide for &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;docs&#x2F;communities&#x2F;administration&#x2F;#room-upgrades&quot;&gt;upgrading rooms and spaces&lt;&#x2F;a&gt; to version 12. That guide will help you to plan your upgrades and to make them happen.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Pre-disclosure: Upcoming coordinated security fix for all Matrix server implementations</title>
    <published>2025-07-16T00:00:00+00:00</published>
    <updated>2025-07-16T00:00:00+00:00</updated>
    <author>
      <name>Matthew Hodgson</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2025/07/security-predisclosure/" type="text/html"/>
    <id>https://matrix.org/blog/2025/07/security-predisclosure/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;Over the last 6 months a major project has been underway by the Element server team and the Matrix.org Foundation security team to investigate “state resets”: scenarios where Matrix’s state resolution algorithm can give unexpected results.  As part of this work we’ve identified two high severity protocol vulnerabilities (CVE-2025-49090; the other not yet allocated a CVE).&lt;&#x2F;p&gt;
&lt;p&gt;Given the security implications of a federation protocol vulnerability, we’ve shared details under embargo over the last 4 weeks with all known active server implementations, and are now aiming for a coordinated security release across all Matrix server implementations on &lt;del&gt;&lt;strong&gt;Tuesday Jul 22nd&lt;&#x2F;strong&gt;&lt;&#x2F;del&gt; &lt;strong&gt;Monday Aug 11th 2025 at 17:00 UTC&lt;&#x2F;strong&gt;.  If you run a Matrix server in an untrusted federation (e.g. the public federation), please be prepared to upgrade as soon as the patched versions are available.&lt;&#x2F;p&gt;
&lt;p&gt;These vulnerabilities have been addressed via MSCs which have been shared, reviewed and are in the final comment period (disposition merge) with the Spec Core Team and server implementor community, under embargo.  This will result in an off-cycle Matrix spec release (1.16) introducing a new room version (&lt;strong&gt;12&lt;&#x2F;strong&gt;) to address the vulnerabilities in question, requiring a room upgrade of existing rooms.  Having given server and room admins time to upgrade, we are then planning to un-embargo the MSCs and complement tests on &lt;del&gt;Friday Jul 25th&lt;&#x2F;del&gt; Thursday Aug 14th 2025 at 17:00 UTC.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;UPDATE: Jul 18th 16:45 UTC&lt;&#x2F;strong&gt;: We&#x27;ve heard a lot of feedback that 6 days isn&#x27;t enough for clients&#x2F;bots&#x2F;bridge&#x2F;tooling developers to test the changes introduced by room v12, and that it also doesn&#x27;t give enough time for community admins to prepare for the necessary room upgrades. Underestimating the time needed here for client&#x2F;community testing is entirely our fault, due to being overfocused on coordinating the significant serverside work needed. &lt;strong&gt;As a result, we&#x27;ve pushed back the coordinated server release date to Aug 11th&lt;&#x2F;strong&gt;, to give everyone more time to test and prepare.  We&#x27;ve also opened up registration on the &lt;code&gt;beta.matrix.org&lt;&#x2F;code&gt; homeserver, which is already running v12 rooms by default, to make it easier for client developers to test their clients.  We&#x27;ve also made one clarification below for client developers, explaining the new permissions needed to send &lt;code&gt;m.room.tombstone&lt;&#x2F;code&gt; events.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;CLARIFICATION: Jul 16 17:30 UTC&lt;&#x2F;strong&gt;: Room admins should plan to upgrade rooms at their convenience, similar to previous security-related room version upgrades (e.g. v1 to v2).  Much like installing an operating system patch, sooner is better, but as these are not Critical Severity vulnerabilities, there is no requirement for room admins to upgrade rooms immediately on Jul 22nd. For instance, the Matrix.org Foundation will likely upgrade its public rooms at some point after Jul 25th (having given server admins a chance to upgrade, and having given any server implementations running late a chance to release).  N.B. Only rooms which include users on potentially malicious servers (e.g. publicly joinable rooms on untrusted federations) are vulnerable.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Important information for client developers:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;Client developers should review &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;blob&#x2F;matthew&#x2F;msc4291&#x2F;proposals&#x2F;4291-room-ids-as-hashes.md&quot;&gt;MSC4291: “Room IDs as hashes of the create event”&lt;&#x2F;a&gt; to ensure their clients can accept the new proposed format of room IDs, and no longer expects &lt;code&gt;content.predecessor.event_id&lt;&#x2F;code&gt; in &lt;code&gt;m.room.create&lt;&#x2F;code&gt; events.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;One of the other changes coming in v12 is that room creators will be privileged over other users in the room. Therefore clients which restrict user behaviour based on power level will need to be updated to be aware that room creators effectively have infinite power level. Creators are &lt;strong&gt;not&lt;&#x2F;strong&gt; listed in the users block of the &lt;code&gt;m.room.power_levels&lt;&#x2F;code&gt; event, and are instead defined as the &lt;code&gt;sender&lt;&#x2F;code&gt; field of the &lt;code&gt;m.room.create&lt;&#x2F;code&gt; event, or entries in a new optional &lt;code&gt;additional_creators&lt;&#x2F;code&gt; array field in the &lt;code&gt;content&lt;&#x2F;code&gt; of the create event. Full details will be released in the MSCs when embargo lifts.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;Finally, clients which use &lt;code&gt;power_level_content_override&lt;&#x2F;code&gt; when creating rooms MUST NOT assign a power level to the room creator, otherwise the &lt;code&gt;&#x2F;createRoom&lt;&#x2F;code&gt; request will fail.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&lt;strong&gt;UPDATE: Jul 18th&lt;&#x2F;strong&gt;: We should have mentioned that the default power level in room v12 for sending &lt;code&gt;m.room.tombstone&lt;&#x2F;code&gt; events to upgrade rooms is 150. This stops normal admins from upgrading the room (and so assuming creator privileges) - instead, a creator has to explicitly boost an admin&#x27;s power level to 150 in order to let them upgrade the room and effectively assume creator rights going forwards.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;This has been an exceptionally complicated project to coordinate and its security implications required us to deviate from our usual MSC process and develop the changes under embargo. This and the expedited release of a new stable room version are exceptional choices that are far from ideal, which we’re having to take to keep the ecosystem secure.  To be clear, normal MSC development and process will continue in the open, just as it always has. We’d like to sincerely thank the Matrix server implementor community for their impressive support in preparing the coordinated security releases - both in terms of vital MSC review, and then working together to implement the necessary changes. Matrix’s server heterogeneity has never looked healthier. We’d also like to thank Timo Kösters for helping precipitate the project in the first place.&lt;&#x2F;p&gt;
&lt;p&gt;We’ll follow up with more details on Aug 11th (assuming the disclosure timeline doesn’t slip further).&lt;&#x2F;p&gt;
&lt;p&gt;Thanks all for your time, patience and understanding while we ship this protocol upgrade (the first coordinated upgrade since &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2019&#x2F;03&#x2F;15&#x2F;matrix-1-0-https-arewereadyyet-com&#x2F;&quot;&gt;Matrix 1.0&lt;&#x2F;a&gt; back in 2019!)&lt;&#x2F;p&gt;
&lt;p&gt;Matthew&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security disclosure for matrix-js-sdk (CVE-2024-47080) and matrix-react-sdk (CVE-2024-47824)</title>
    <published>2024-10-15T11:39:35+00:00</published>
    <updated>2024-10-15T11:39:35+00:00</updated>
    <author>
      <name>Matrix.org Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2024/10/security-disclosure-matrix-js-sdk-and-matrix-react-sdk/" type="text/html"/>
    <id>https://matrix.org/blog/2024/10/security-disclosure-matrix-js-sdk-and-matrix-react-sdk/</id>
    <content type="html">&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;We are disclosing two high-severity vulnerabilities in matrix-js-sdk and matrix-react-sdk related to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-spec-proposals&#x2F;pull&#x2F;3061&quot;&gt;MSC3061&lt;&#x2F;a&gt;, which specifies sharing room keys with newly invited users for message history access.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;affected-versions&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#affected-versions&quot; aria-label=&quot;Anchor link for: affected-versions&quot;&gt;🔗&lt;&#x2F;a&gt;Affected versions&lt;&#x2F;h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;matrix-js-sdk&lt;&#x2F;strong&gt; ≥ 9.11.0, &amp;lt; 34.8.0 (&lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2024-47080&quot;&gt;CVE-2024-47080&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-js-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-4jf8-g8wp-cx7c&quot;&gt;GHSA-4jf8-g8wp-cx7c&lt;&#x2F;a&gt;). Fixed in 34.8.0.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;matrix-react-sdk&lt;&#x2F;strong&gt; ≥ 3.18.0, &amp;lt; 3.102.0 (&lt;a href=&quot;https:&#x2F;&#x2F;www.cve.org&#x2F;CVERecord?id=CVE-2024-47824&quot;&gt;CVE-2024-47824&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-react-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-qcvh-p9jq-wp8v&quot;&gt;GHSA-qcvh-p9jq-wp8v&lt;&#x2F;a&gt;). Fixed in 3.102.0.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;h3 id=&quot;vulnerability-details&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#vulnerability-details&quot; aria-label=&quot;Anchor link for: vulnerability-details&quot;&gt;🔗&lt;&#x2F;a&gt;Vulnerability details&lt;&#x2F;h3&gt;
&lt;p&gt;When inviting a user to an encrypted room, in the legacy (pre-Rust) encryption implementation, matrix-react-sdk forwarded existing message keys to the newly invited user so they could decrypt shared message history as per MSC3061. The implementation is provided by matrix-js-sdk, which incorrectly applied the same rules for sending &lt;em&gt;existing&lt;&#x2F;em&gt; keys to the invited user as for sending &lt;em&gt;new&lt;&#x2F;em&gt; keys, which allows them to be sent to unverified devices and unverified users. While there&#x27;s always some risk of key exposure to a server-side attacker when you&#x27;re interacting with unverified users, the risk is higher for historical keys.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;root-cause-and-remediation&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#root-cause-and-remediation&quot; aria-label=&quot;Anchor link for: root-cause-and-remediation&quot;&gt;🔗&lt;&#x2F;a&gt;Root cause and remediation&lt;&#x2F;h3&gt;
&lt;p&gt;The root cause of the matrix-react-sdk vulnerability is a function call into vulnerable functionality implemented in the matrix-js-sdk. The matrix-react-sdk vulnerability was addressed earlier, in matrix-react-sdk version 3.102.0, by removing the call. The matrix-js-sdk vulnerability will be addressed in version 34.8.0 to remove the vulnerable functionality completely. Because of these differences, two separate advisories were warranted.&lt;&#x2F;p&gt;
&lt;p&gt;Note that the vulnerability is only present in the matrix-js-sdk when running the old, non-Rust encryption stack. The vulnerable functionality was never implemented in the Rust-based stack. As a result, clients using the matrix-js-sdk in Rust crypto mode (i.e. calling &lt;code&gt;initRustCrypto&lt;&#x2F;code&gt; rather than &lt;code&gt;initCrypto&lt;&#x2F;code&gt;) are &lt;em&gt;not&lt;&#x2F;em&gt; vulnerable, even if on a nominally vulnerable version.&lt;&#x2F;p&gt;
&lt;p&gt;Furthermore, matrix-android-sdk2 and matrix-ios-sdk have similar functionality that is gated behind an experimental setting—we recommend avoiding use of this setting, though there are no specific advisories since the feature has only been available in an experimental state.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;proposed-specification-changes&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#proposed-specification-changes&quot; aria-label=&quot;Anchor link for: proposed-specification-changes&quot;&gt;🔗&lt;&#x2F;a&gt;Proposed specification changes&lt;&#x2F;h3&gt;
&lt;p&gt;To fix this functionality in terms of the specification process, we will open an MSC to explicitly clarify that MSC3061 key forwarding should only forward keys to verified devices owned by verified users, ensuring that historical keys are never shared with untrusted devices. This also encourages users to verify each other to enable reading message history, thereby improving Matrix security against interception.&lt;&#x2F;p&gt;
&lt;h3 id=&quot;note-on-project-ownership&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#note-on-project-ownership&quot; aria-label=&quot;Anchor link for: note-on-project-ownership&quot;&gt;🔗&lt;&#x2F;a&gt;Note on project ownership&lt;&#x2F;h3&gt;
&lt;p&gt;The matrix-react-sdk is no longer a Foundation project but that of Element and has been moved to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;element-hq&#x2F;matrix-react-sdk&quot;&gt;https:&#x2F;&#x2F;github.com&#x2F;element-hq&#x2F;matrix-react-sdk&lt;&#x2F;a&gt;. However, the vulnerability in question was introduced, found and patched while it was still under Foundation ownership. For this reason, the Matrix.org Security team decided to treat this as a Foundation advisory. Future advisories for matrix-react-sdk (if any) will come from Element.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Disclosure: Bridges security issues</title>
    <published>2023-08-04T10:30:00+00:00</published>
    <updated>2023-08-04T10:30:00+00:00</updated>
    <author>
      <name>Integrations Team, Matrix Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2023/08/bridges-vulnerability-disclosure/" type="text/html"/>
    <id>https://matrix.org/blog/2023/08/bridges-vulnerability-disclosure/</id>
    <content type="html">&lt;p&gt;Hi folks. As previously mentioned on &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;07&#x2F;bridges-security-updates&#x2F;&quot;&gt;Monday&lt;&#x2F;a&gt;, we’re now disclosing the vulnerabilities patched for the IRC, Slack and Hookshot bridges. If you have not already done so, please ensure you are running the patched versions.&lt;&#x2F;p&gt;
&lt;p&gt;Today we are disclosing the 3 vulnerabilities.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;matrix-appservice-bridge-doesn-t-verify-the-sub-parameter-of-an-openid-token-exchange-cve-2023-38691&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#matrix-appservice-bridge-doesn-t-verify-the-sub-parameter-of-an-openid-token-exchange-cve-2023-38691&quot; aria-label=&quot;Anchor link for: matrix-appservice-bridge-doesn-t-verify-the-sub-parameter-of-an-openid-token-exchange-cve-2023-38691&quot;&gt;🔗&lt;&#x2F;a&gt;matrix-appservice-bridge doesn&#x27;t verify the sub parameter of an openId token exchange (CVE-2023-38691)&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-bridge&#x2F;security&#x2F;advisories&#x2F;GHSA-vc7j-h8xg-fv5x&quot;&gt;GHSA-vc7j-h8xg-fv5x&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38691&quot;&gt;CVE-2023-38691&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The &lt;code&gt;POST &#x2F;v1&#x2F;exchange_openid&lt;&#x2F;code&gt; endpoint did not check that the servername part of the &lt;code&gt;sub&lt;&#x2F;code&gt; parameter (containing the user&#x27;s &lt;em&gt;claimed&lt;&#x2F;em&gt; MXID) is the same as the servername we are talking to. This could allow a malicious actor to spin up a server on any given domain, respond with a &lt;code&gt;sub&lt;&#x2F;code&gt; parameter according to the user they want to act as and use the resulting token to perform provisioning requests.&lt;&#x2F;p&gt;
&lt;p&gt;This is now patched so that the server part of the sub &#x2F; user ID is checked against the server used to make the request.&lt;&#x2F;p&gt;
&lt;p&gt;Discovered and reported by a community member.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;irc-command-injection-via-admin-commands-containing-newlines-cve-2023-38690&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#irc-command-injection-via-admin-commands-containing-newlines-cve-2023-38690&quot; aria-label=&quot;Anchor link for: irc-command-injection-via-admin-commands-containing-newlines-cve-2023-38690&quot;&gt;🔗&lt;&#x2F;a&gt;IRC command injection via admin commands containing newlines (CVE-2023-38690)&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;security&#x2F;advisories&#x2F;GHSA-3pmj-jqqp-2mj3&quot;&gt;GHSA-3pmj-jqqp-2mj3&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38690&quot;&gt;CVE-2023-38690&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;When the IRC bridge attempted to parse an admin command from a Matrix user, it would only split arguments by a literal space. For example, sending “!join #matrix\nfoobar” would treat the channel name as “#matrix\nfoobar”. This could then be exploited to inject any IRC command into the bridge to be run. Since the !join command first joins via the bridge bot user, it could be used to execute commands as the bridge bot.&lt;&#x2F;p&gt;
&lt;p&gt;This is now patched so that both the command handler is more strict about its arguments, as well as channel names being explicitly validated when provided by users.&lt;&#x2F;p&gt;
&lt;p&gt;Discovered and reported by &lt;a href=&quot;https:&#x2F;&#x2F;valentin-lorentz.fr&#x2F;&quot;&gt;Val Lorentz&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;events-can-be-crafted-to-leak-parts-of-targeted-messages-from-other-bridged-rooms-cve-2023-38700&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#events-can-be-crafted-to-leak-parts-of-targeted-messages-from-other-bridged-rooms-cve-2023-38700&quot; aria-label=&quot;Anchor link for: events-can-be-crafted-to-leak-parts-of-targeted-messages-from-other-bridged-rooms-cve-2023-38700&quot;&gt;🔗&lt;&#x2F;a&gt;Events can be crafted to leak parts of targeted messages from other bridged rooms (CVE-2023-38700)&lt;&#x2F;h2&gt;
&lt;p&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;security&#x2F;advisories&#x2F;GHSA-c7hh-3v6c-fj4q&quot;&gt;GHSA-c7hh-3v6c-fj4q&lt;&#x2F;a&gt; &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38700&quot;&gt;CVE-2023-38700&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The IRC bridge caches recent timeline messages in memory, so that when a reply is seen for a message it doesn’t need to request the event content from the homeserver. However the room ID was not validated when accessing this cache, so a malicious actor could craft a reply event in another room referencing any event ID (so long as it was still in the bridge cache) to trick the bridge into posting the message content into a bridged reply.&lt;&#x2F;p&gt;
&lt;p&gt;Discovered and reported by &lt;a href=&quot;https:&#x2F;&#x2F;valentin-lorentz.fr&#x2F;&quot;&gt;Val Lorentz&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;If you have further questions, please reach out on &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Bridges Security Update</title>
    <published>2023-07-31T11:40:00+00:00</published>
    <updated>2023-07-31T11:40:00+00:00</updated>
    <author>
      <name>Integrations Team, Matrix Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2023/07/bridges-security-updates/" type="text/html"/>
    <id>https://matrix.org/blog/2023/07/bridges-security-updates/</id>
    <content type="html">&lt;p&gt;Today we are announcing security updates for several of our bridges.&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;matrix-appservice-irc &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;releases&#x2F;tag&#x2F;1.0.1&quot;&gt;1.0.1&lt;&#x2F;a&gt; affected by GHSA-vc7j-h8xg-fv5x &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38691&quot;&gt;CVE-2023-38691&lt;&#x2F;a&gt;, GHSA-3pmj-jqqp-2mj3 &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38690&quot;&gt;CVE-2023-38690&lt;&#x2F;a&gt;, and GHSA-c7hh-3v6c-fj4q&lt;&#x2F;li&gt;
&lt;li&gt;matrix-hookshot &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-hookshot&#x2F;releases&#x2F;tag&#x2F;4.4.1&quot;&gt;4.4.1&lt;&#x2F;a&gt; affected by GHSA-vc7j-h8xg-fv5x &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38691&quot;&gt;CVE-2023-38691&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;li&gt;matrix-appservice-slack &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-slack&#x2F;releases&#x2F;tag&#x2F;2.1.2&quot;&gt;2.1.2&lt;&#x2F;a&gt; affected by GHSA-vc7j-h8xg-fv5x &#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvename.cgi?name=CVE-2023-38691&quot;&gt;CVE-2023-38691&lt;&#x2F;a&gt;&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;In addition we have released matrix-appservice-bridge &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-bridge&#x2F;releases&#x2F;tag&#x2F;9.0.1&quot;&gt;9.0.1&lt;&#x2F;a&gt; (and backported to &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-bridge&#x2F;releases&#x2F;tag&#x2F;8.1.2&quot;&gt;8.1.2&lt;&#x2F;a&gt;) which patches GHSA-vc7j-h8xg-fv5x.&lt;&#x2F;p&gt;
&lt;p&gt;All mentioned bridges are affected by a vulnerability in the provisioning interfaces of these bridges. If you are unable to upgrade, please disable provisioning for now (which should be documented in the relevant bridge sample config).&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;blob&#x2F;develop&#x2F;config.sample.yaml#L520-L522&quot;&gt;IRC bridge config&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;provisioning.enabled&lt;&#x2F;code&gt; to false.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-slack&#x2F;blob&#x2F;a9f555308fb7485ebb1df98e6c327808915f816f&#x2F;config&#x2F;config.sample.yaml#L163&quot;&gt;Slack bridge config&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;provisioning.enabled&lt;&#x2F;code&gt; to false.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-hookshot&#x2F;blob&#x2F;main&#x2F;config.sample.yml#L192&quot;&gt;Hookshot config&lt;&#x2F;a&gt;
&lt;ul&gt;
&lt;li&gt;Remove the &lt;code&gt;widgets&lt;&#x2F;code&gt; resource (NOT provisioning)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The IRC bridge is also affected by two additional vulnerabilities. In this case, we would recommend upgrading &lt;strong&gt;immediately&lt;&#x2F;strong&gt; rather than working around the problems.&lt;&#x2F;p&gt;
&lt;p&gt;Disclosures for these vulnerabilities, as well as CVE numbers will be out in three days (Thursday 3rd).&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;We advise to upgrade as soon as possible.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;If you have further questions, please reach out on &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt;&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Postponing the Libera.Chat deportalling</title>
    <published>2023-07-28T14:00:00+00:00</published>
    <updated>2023-07-28T14:00:00+00:00</updated>
    <author>
      <name>Thib</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2023/07/postponing-libera-chat-deportalling/" type="text/html"/>
    <id>https://matrix.org/blog/2023/07/postponing-libera-chat-deportalling/</id>
    <content type="html">&lt;p&gt;We have recently announced that &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;07&#x2F;deportalling-libera-chat&#x2F;&quot;&gt;we will be honouring Libera Chat’s request&lt;&#x2F;a&gt; to turn off portalled rooms on the Libera.Chat bridge maintained by the Matrix.org Foundation. The changes were originally scheduled to be effective on 31st July. In the meantime, we posted &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2023&#x2F;07&#x2F;make-sure-libera-bridge-keeps-working&#x2F;&quot;&gt;instructions for people to turn their portalled rooms into plumbed ones&lt;&#x2F;a&gt; so the bridge keeps working for them.&lt;&#x2F;p&gt;
&lt;p&gt;Some stability issues on the bridge have prevented people from turning their portalled rooms into plumbed ones. We have been actively working on resolving those issues since the first reports and the situation is gradually improving. However, at this point, we do not believe the plumbed mode can be considered sufficiently stable yet.&lt;&#x2F;p&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Additionally, as part of the project we have been made aware of several new bridge security issues. These issues must be patched ahead of the plumbing stability work thereby increasing the overall scope of the project. The limited resources of the &lt;a href=&quot;http:&#x2F;&#x2F;Matrix.org&quot;&gt;Matrix.org&lt;&#x2F;a&gt; Foundation didn’t allow us to meet the deadline in time.&lt;&#x2F;p&gt;
&lt;p&gt;Rather than plough ahead with the original timeline and risking splitting communities, we have asked Libera Chat for an extension for turning off portal rooms to ensure successful migrations in order to make sure the bridge is ready to handle the traffic in plumbed rooms and to leave people enough time to migrate their rooms after the stabilisation work. We have asked the Libera Chat staff to allow us to postpone the deportalling to Friday 11 August, which they accepted. We’re grateful to the Libera Chat team for accommodating us.&lt;&#x2F;p&gt;
&lt;p&gt;We will turn off the new portal creation on Monday 31 July, but will leave the existing portals active. On Friday 11 August we will make all the portal rooms read-only, and will send a message in each portalled room to list all the public rooms plumbed to the same channel on IRC.&lt;&#x2F;p&gt;
&lt;h2 id=&quot;security-release-information&quot;&gt;&lt;a class=&quot;zola-anchor&quot; href=&quot;#security-release-information&quot; aria-label=&quot;Anchor link for: security-release-information&quot;&gt;🔗&lt;&#x2F;a&gt;Security release information&lt;&#x2F;h2&gt;
&lt;p&gt;On Monday 31st, we will release new security updates for several bridges and the matrix-appservice-bridge library, including the IRC bridge. These will be:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;matrix-appservice-bridge 9.0.1&lt;&#x2F;li&gt;
&lt;li&gt;matrix-appservice-irc 1.0.1&lt;&#x2F;li&gt;
&lt;li&gt;matrix-appservice-slack 2.1.2&lt;&#x2F;li&gt;
&lt;li&gt;matrix-hookshot 4.4.1&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We, and the community, have found several vulnerabilities classified as High severity and strongly recommend upgrading as soon as possible after the release.&lt;&#x2F;p&gt;
&lt;p&gt;A full disclosure of the vulnerabilities will be out 3 days after the release, to allow people time to upgrade.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Disclosing Synapse security advisories</title>
    <published>2023-05-24T13:44:36+00:00</published>
    <updated>2023-05-24T13:36:50+00:00</updated>
    <author>
      <name>Denis Kasak</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2023/05/24/disclosing-synapse-security-advisories/" type="text/html"/>
    <id>https://matrix.org/blog/2023/05/24/disclosing-synapse-security-advisories/</id>
    <content type="html">&lt;p&gt;Today we are retroactively publishing advisories for security bugs in &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;&quot;&gt;Synapse&lt;&#x2F;a&gt;. From oldest to most recent, they are:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;security&#x2F;advisories&#x2F;GHSA-p9qp-c452-f9r7&quot;&gt;GHSA-p9qp-c452-f9r7&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE-2022-39374&quot;&gt;CVE-2022-39374&lt;&#x2F;a&gt;), fixed in Synapse 1.68.0 and affecting all prior versions since Synapse 1.62.0;&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;security&#x2F;advisories&#x2F;GHSA-45cj-f97f-ggwv&quot;&gt;GHSA-45cj-f97f-ggwv&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE-2022-39335&quot;&gt;CVE-2022-39335&lt;&#x2F;a&gt;), fixed in Synapse 1.69.0 and affecting all prior versions; and finally&lt;&#x2F;li&gt;
&lt;li&gt;&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;security&#x2F;advisories&#x2F;GHSA-f3wc-3vxv-xmvr&quot;&gt;GHSA-f3wc-3vxv-xmvr&lt;&#x2F;a&gt; (&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE-2023-32323&quot;&gt;CVE-2023-32323&lt;&#x2F;a&gt;), fixed in Synapse 1.74.0 and affecting all prior versions.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We strongly advise Synapse operators who are still on earlier Synapse versions to upgrade to the latest version (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;releases&#x2F;tag&#x2F;v1.84.0&quot;&gt;v1.84.0&lt;&#x2F;a&gt;) or at the very least v1.74.0 (&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;releases&#x2F;tag&#x2F;v1.74.0&quot;&gt;released Dec 2022&lt;&#x2F;a&gt;), to prevent attacks based on these vulnerabilities. Please see the advisories for the full details, including a description of&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;the vulnerability and potential attacks,&lt;&#x2F;li&gt;
&lt;li&gt;exactly which deployments are vulnerable, and&lt;&#x2F;li&gt;
&lt;li&gt;workarounds and mitigations.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Because these bugs are either related to or exploitable over Matrix federation, we have delayed publishing these advisories until now out of caution. This allowed us to ensure that the majority of Synapse homeservers across the public federation have upgraded to a sufficiently patched version, based on the (opt-in) &lt;a href=&quot;https:&#x2F;&#x2F;matrix-org.github.io&#x2F;synapse&#x2F;latest&#x2F;usage&#x2F;administration&#x2F;monitoring&#x2F;reporting_homeserver_usage_statistics.html&quot;&gt;stats reporting&lt;&#x2F;a&gt; to the Matrix.org foundation.&lt;&#x2F;p&gt;
&lt;p&gt;If you have any questions or comments about this announcement or any of the advisories, e-mail us at &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security releases: matrix-js-sdk 24.0.0 and matrix-react-sdk 3.69.0</title>
    <published>2023-03-28T00:00:00+00:00</published>
    <updated>2023-03-28T00:00:00+00:00</updated>
    <author>
      <name>Denis Kasak</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2023/03/28/security-releases-matrix-js-sdk-24-0-0-and-matrix-react-sdk-3-69-0/" type="text/html"/>
    <id>https://matrix.org/blog/2023/03/28/security-releases-matrix-js-sdk-24-0-0-and-matrix-react-sdk-3-69-0/</id>
    <content type="html">&lt;p&gt;Today we are issuing security releases of matrix-js-sdk and matrix-react-sdk to
patch a pair of High severity vulnerabilities
(&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE-2023-28427&quot;&gt;CVE-2023-28427&lt;&#x2F;a&gt;
&#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-js-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-mwq8-fjpf-c2gr&quot;&gt;GHSA-mwq8-fjpf-c2gr&lt;&#x2F;a&gt;
for matrix-js-sdk and
&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE-2023-28103&quot;&gt;CVE-2023-28103&lt;&#x2F;a&gt;
&#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-react-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-6g43-88cp-w5gv&quot;&gt;GHSA-6g43-88cp-w5gv&lt;&#x2F;a&gt;
for matrix-react-sdk).&lt;&#x2F;p&gt;
&lt;p&gt;Affected clients include those which depend on the affected libraries, such as
Element Web&#x2F;Desktop and Cinny. Releases of the affected clients should follow
shortly. We advise users of those clients to upgrade at their earliest
convenience.&lt;&#x2F;p&gt;
&lt;p&gt;The issues involve prototype pollution via events containing special strings in
key locations, which can temporarily disrupt normal functioning of
matrix-js-sdk and matrix-react-sdk, potentially impacting the consumer&#x27;s
ability to process data safely.&lt;&#x2F;p&gt;
&lt;p&gt;Although we have only demonstrated a denial-of-service-style impact, we cannot
completely rule out the possibility of a more severe impact due to the
relatively extensive attack surface. We have therefore classified this as High
severity and strongly recommend upgrading as a precautionary measure.&lt;&#x2F;p&gt;
&lt;p&gt;We found these issues during a codebase audit that we had &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;08&#x2F;31&#x2F;security-releases-matrix-js-sdk-19-4-0-and-matrix-react-sdk-3-53-0&quot;&gt;previously
announced&lt;&#x2F;a&gt;
in an earlier security release of matrix-js-sdk and matrix-react-sdk. The
earlier release had already addressed a set of similar vulnerabilities that
were assigned
&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE%2D2022%2D36059&quot;&gt;CVE-2022-36059&lt;&#x2F;a&gt;
&#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-js-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-rfv9-x7hh-xc32&quot;&gt;GHSA-rfv9-x7hh-xc32&lt;&#x2F;a&gt;
and
&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE%2D2022%2D36060&quot;&gt;CVE-2022-36060&lt;&#x2F;a&gt;
&#x2F; &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-react-sdk&#x2F;security&#x2F;advisories&#x2F;GHSA-2x9c-qwgf-94xr&quot;&gt;GHSA-2x9c-qwgf-94xr&lt;&#x2F;a&gt;,
which we had initially decided not to disclose until the completion of the
audit. Now that the audit is finished, we are disclosing those previous
advisories as well.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Upgrade now to address E2EE vulnerabilities in matrix-js-sdk, matrix-ios-sdk and matrix-android-sdk2</title>
    <published>2022-09-28T17:41:33+00:00</published>
    <updated>2022-09-28T17:41:33+00:00</updated>
    <author>
      <name>Matthew Hodgson, Denis Kasak, Matrix Cryptography Team, Matrix Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2022/09/28/upgrade-now-to-address-encryption-vulns-in-matrix-sdks-and-clients/" type="text/html"/>
    <id>https://matrix.org/blog/2022/09/28/upgrade-now-to-address-encryption-vulns-in-matrix-sdks-and-clients/</id>
    <content type="html">&lt;p&gt;&lt;strong&gt;TL;DR:&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;Two critical severity vulnerabilities in end-to-end encryption were found in
the SDKs which power Element, Beeper, Cinny, SchildiChat, Circuli, Synod.im
and any other clients based on matrix-js-sdk, matrix-ios-sdk or
matrix-android-sdk2.&lt;&#x2F;li&gt;
&lt;li&gt;These have now been fixed, and we have not seen evidence of them being
exploited in the wild. All of the critical vulnerabilities require
cooperation from a malicious homeserver to be exploited.&lt;&#x2F;li&gt;
&lt;li&gt;&lt;strong&gt;Please upgrade immediately in order to be protected against these
vulnerabilities.&lt;&#x2F;strong&gt;&lt;&#x2F;li&gt;
&lt;li&gt;Clients with other encryption implementations (including Hydrogen, ElementX,
Nheko, FluffyChat, Syphon, Timmy, Gomuks and Pantalaimon) are not affected;
&lt;strong&gt;this is not a protocol bug&lt;&#x2F;strong&gt;.&lt;&#x2F;li&gt;
&lt;li&gt;We take the security of our end-to-end encryption extremely seriously, and we
have an ongoing series of public independent audits booked to help guard
against future vulnerabilities.  We will also be making some protocol changes
in the future to provide additional layers of protection.&lt;&#x2F;li&gt;
&lt;li&gt;This resolves the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;09&#x2F;23&#x2F;pre-disclosure-upcoming-critical-security-release-of-matrix-sd-ks-and-clients&quot;&gt;pre-disclosure&lt;&#x2F;a&gt; issued on September 23rd.&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;span id=&quot;continue-reading&quot;&gt;&lt;&#x2F;span&gt;
&lt;p&gt;Hi all,&lt;&#x2F;p&gt;
&lt;p&gt;Recently we have been hard at work investigating some subtle security
vulnerabilities in certain implementations of Matrix&#x27;s end-to-end encryption
which were responsibly disclosed to us by researchers at Royal Holloway
University London, University of Sheffield and Brave Software. Two of these
vulnerabilities are critical severity, in that they could allow malicious
server admins to attack their users, and are implementation bugs in clients
using matrix-js-sdk (e.g. Element Web) or implementations derived from
matrix-js-sdk, rather than protocol flaws. matrix-rust-sdk (and other 2nd&#x2F;3rd
generation SDKs) are not affected by these.  These vulnerabilities are fixed in
today&#x27;s release, and we are not aware of them having been exploited in the
wild.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;If you&#x27;re using Element or an application that shares the same SDKs (Beeper,
Cinny, SchildiChat, Circuli, Synod.im) then please upgrade now. Do not perform
verification with new devices until you have upgraded.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;d like to thank the security researchers for investing significant time and
effort into doing a deep dive to find these issues, and thus contributing
materially to making Matrix more secure for the whole ecosystem.  Despite our
best efforts, there is always a risk of security issues in software, and we&#x27;re
very glad to have identified and fixed these issues while also taking the
opportunity to improve our vulnerability disclosure and coordinated upgrade
process.&lt;&#x2F;p&gt;
&lt;p&gt;Please note that the critical severity issues are implementation issues in
matrix-js-sdk and derivatives, and are &lt;strong&gt;not&lt;&#x2F;strong&gt; protocol issues in Matrix. The
latest version of the researchers&#x27; paper that we&#x27;ve seen incorrectly presents
Element as &#x27;the reference Matrix client&#x27;, and confuses the higher severity
implementation bugs with lower severity protocol critique.  This is very
unfortunate, given Hydrogen, ElementX, Nheko, FluffyChat, Syphon, Timmy, Gomuks
and Pantalaimon and other independent implementations are not affected. In
fact, every client independently implemented using the Matrix spec seems to
have got it right, which speaks well of the protocol.  It&#x27;s only the first
generation SDK (predating the spec) and its derivatives which had these bugs.&lt;&#x2F;p&gt;
&lt;p&gt;The two critical severity issues lead to three attack scenarios, all of which
are prevented by today&#x27;s releases:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;Key&#x2F;Device Identifier Confusion in SAS Verification&lt;&#x2F;em&gt;&quot; – A bug existed in
matrix-js-sdk where it confused together device IDs and cross-signing keys
(given under the hood, cross-signing keys are represented as devices). This
could be exploited by a malicious server admin to break emoji-based
verification when cross-signing is in use, authenticating themselves rather
than the target user being verified. This bug is only present in
matrix-js-sdk (not iOS or Android SDKs), tracked as a critical severity CVE:
CVE-2022-39250.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;Trusted Impersonation&lt;&#x2F;em&gt;&quot; – matrix-js-sdk (and derived SDKs) suffered from
a protocol-confusion bug where it would incorrectly accept to-device messages
encrypted by Megolm rather than Olm, attributing them to the Megolm sender
rather than the actual sender. As a result, an attacker could fake the
trusted sender of to-device messages, allowing them to send fake to-device
messages to devices - e.g. fake keys to spoof historical messages from other
users.  This bug is tracked as a critical severity CVE: CVE-2022-39251
(matrix-js-sdk), CVE-2022-39255 (matrix-ios-sdk) and CVE-2022-39248
(matrix-android-sdk2).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;Malicious key backup&lt;&#x2F;em&gt;&quot; – the above &#x27;trusted impersonation&#x27; bug in
matrix-js-sdk (and derived SDKs) could be used by a malicious homeserver
admin to add a malicious key backup to the user&#x27;s account under certain
unusual conditions in order to exfiltrate message keys. While we are not
aware of this being exploited in the wild, out of an abundance of caution we
recommend checking your key backup settings. If you are particularly paranoid
you may wish to reset your online key backup.  This doesn&#x27;t have a separate
CVE, as the root cause is the same as &quot;Trusted Impersonation&quot;.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;Three lower priority issues were also identified by the researchers:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;Semi-trusted Impersonation&lt;&#x2F;em&gt;&quot; – matrix-js-sdk (and derived SDKs) accepted keys
forwarded by other users, even if your client didn&#x27;t request them. As
a result, a malicious server admin could fake an encrypted message to look as
if it was sent from a given user on that server. However, impersonated
messages like this are clearly marked  by clients like Element with a clear
&quot;The authenticity of this encrypted message can&#x27;t be guaranteed&quot; warning
– which is why we consider this low severity. That said, it&#x27;s an avoidable
attack, and we&#x27;ve fixed this by ensuring that clients don&#x27;t accept &#x27;unsafe&#x27;
keys (with the exception of keys forwarded when you invite a user to an
existing conversation).  In future, in Olm&#x2F;Megolm v2 we&#x27;re also linking
key-sending events to the underlying recipient Olm identity to ensure that
keys cannot be misappropriated.  This issue is tracked as a moderate severity
CVE: CVE-2022-39249 (matrix-js-sdk), CVE-2022-39257 (matrix-ios-sdk) and
CVE-2022-39246 (matrix-android-sdk2).&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;Homeserver Control of Room Membership&lt;&#x2F;em&gt;&quot; – A malicious homeserver can fake
invites on behalf of its users to invite malicious users into their
conversations, or add malicious devices into its users accounts.  However,
when this happens, we clearly warn the user: if you have verified the users
you are talking to, the room and user will be shown with a big red cross to
mark if malicious devices have been added.  Similarly, if an unexpected user
is invited to a conversation, all users can clearly see and take evasive
action.  Therefore we consider this a low severity issue.  That said, this
behaviour can be improved, and we&#x27;ve started work on switching our trust
model to trust-on-first-use (so that new untrusted devices are proactively
excluded from conversations, even if you haven&#x27;t explicitly verified their
owner) - and we&#x27;re also looking to add cryptographic signatures to membership
events in E2EE rooms to stop impersonated invites.  These fixes will land
over the coming months.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;li&gt;
&lt;p&gt;&quot;&lt;em&gt;IND-CCA break&lt;&#x2F;em&gt;&quot; – Matrix&#x27;s usage of AES-CTR to encrypt attachments, secrets
and symmetric key backups is not &quot;IND-CCA2 secure&quot;, because it does not
include the AES initialisation vector within the hash used to secure the
payload from tampering. As a result, if an attacker could observe the result
of both a given encryption and a given decryption operation, it would be
possible to extract the encryption private key. However, this is a purely
theoretical attack as Matrix does not provide a way to mount the attack. In
the future, we will fix our use of AES-CTR to include the IV within the hash.&lt;&#x2F;p&gt;
&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;We&#x27;d like to again thank Martin R. Albrecht and Dan Jones from the Information
Security Group at Royal Holloway University London, Benjamin Dowling from
Security of Advanced Systems Group, University of Sheffield and Sofía Celi from
Brave Software for discovering these issues and responsibly disclosing them to
us, and then working with us to agree on an extended disclosure window given
the amount of work needed to verify and ship fixes throughout Matrix over the
course of the summer period.  We welcome any further formal security analysis
work, and hope that it will distinguish clearly between Matrix-the-protocol and
Matrix implementations like matrix-js-sdk, rather than conflating them. You can
read their full paper &lt;a href=&quot;https:&#x2F;&#x2F;nebuchadnezzar-megolm.github.io&#x2F;&quot;&gt;here&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;d also like to thank all the downstream Element package maintainers,
downstream forks and other affected clients for working together under time
constraints for this coordinated release - your patience and understanding is
very much appreciated indeed.&lt;&#x2F;p&gt;
&lt;p&gt;Meanwhile, we are taking extreme measures to avoid future E2EE vulnerabilities.
You will notice that matrix-rust-sdk, hydrogen-sdk and other 2nd and 3rd
generation SDKs were not affected by the bugs at the root cause of the critical
issues here. This is &lt;strong&gt;precisely&lt;&#x2F;strong&gt; why we have been working on replacing the
first generation SDKs with a clean, carefully written Rust implementation in
the form of matrix-rust-sdk, complete with an ongoing independent public audit.&lt;&#x2F;p&gt;
&lt;p&gt;We started the process of auditing matrix-rust-sdk with the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;blog&#x2F;2022&#x2F;05&#x2F;16&#x2F;independent-public-audit-of-vodozemac-a-native-rust-reference-implementation-of-matrix-end-to-end-encryption&quot;&gt;Least Authority
vodozemac audit in May&lt;&#x2F;a&gt;, and we have three more audits agreed
– covering matrix-rust-sdk-crypto, matrix-rust-sdk, and a whole reference
Matrix stack.  Ironically, the mitigation work for these vulnerabilities in the
legacy SDKs has severely impacted our timelines for finishing
matrix-rust-sdk-crypto work (in fact, we had to push back the Least Authority
audit of matrix-rust-sdk-crypto given the
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-rust-sdk&#x2F;milestone&#x2F;1&quot;&gt;burndown&lt;&#x2F;a&gt; has not
progressed), but we will be shifting to the new audited codebase as rapidly as
we possibly can.&lt;&#x2F;p&gt;
&lt;p&gt;Over the coming months we will also introduce our first ever major version
update of Olm and Megolm, in order to fix the MAC truncation issue highlighted
in the &lt;a href=&quot;https:&#x2F;&#x2F;matrix.org&#x2F;media&#x2F;Least%20Authority%20-%20Matrix%20vodozemac%20Final%20Audit%20Report.pdf&quot;&gt;vodozemac audit&lt;&#x2F;a&gt; (Issue J), and reduce the risk of further
key-forwarding issues (as per the &quot;Semi-trusted Impersonation&quot; vulnerability
above). New conversations will default to using v2 of Olm&#x2F;Megolm for security,
and existing conversations can be optionally upgraded (similar to a &#x27;room
version&#x27; upgrade in Matrix today). We are also adding extensive end-to-end
testing using &lt;a href=&quot;https:&#x2F;&#x2F;gitlab.com&#x2F;polyjuice&quot;&gt;Polyjuice&lt;&#x2F;a&gt; and &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;trafficlight&quot;&gt;Traffic
Light&lt;&#x2F;a&gt; to stress-test encryption
and improve reliability.&lt;&#x2F;p&gt;
&lt;p&gt;Finally, we will continue our research into layering Matrix over Messaging
Layer Security (MLS) - the IETF proposed standard for interoperable end-to-end
encrypted group messaging.  This work has been delayed by the mitigation
activity above, but otherwise it&#x27;s making good progress and we&#x27;re excited to
see how Decentralised MLS performs in reality against Olm+Megolm v2.&lt;&#x2F;p&gt;
&lt;p&gt;We&#x27;d like to apologise to the wider Matrix community for the inconvenience and
disruption of these issues, and thank you for your patience while we&#x27;ve
resolved them.&lt;&#x2F;p&gt;
&lt;p&gt;Matthew, Denis and the Matrix cryptography &amp;amp; security teams.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Pre-disclosure: upcoming critical security release of Matrix SDKs and clients</title>
    <published>2022-09-23T14:53:12+00:00</published>
    <updated>2022-09-23T14:53:12+00:00</updated>
    <author>
      <name>Matrix Security Team</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2022/09/23/pre-disclosure-upcoming-critical-security-release-of-matrix-sd-ks-and-clients/" type="text/html"/>
    <id>https://matrix.org/blog/2022/09/23/pre-disclosure-upcoming-critical-security-release-of-matrix-sd-ks-and-clients/</id>
    <content type="html">&lt;p&gt;We will be releasing a security update to matrix-js-sdk, matrix-ios-sdk and matrix-android-sdk2 and clients which implement end-to-end encryption with these libraries, to patch &lt;strong&gt;critical&lt;&#x2F;strong&gt; security issues, on &lt;strong&gt;Wed, Sept 28th&lt;&#x2F;strong&gt;. The releases will be published in the afternoon, followed by the disclosure blog post around 16:00 UTC. The affected clients include Element Web, Desktop, iOS and Android.  We will also be working with downstream packagers and forks over the coming days to ensure a synchronised release to address affected clients.&lt;&#x2F;p&gt;
&lt;p&gt;Clients using matrix-rust-sdk, hydrogen-sdk and matrix-nio are not affected by these critical issues.  We are also auditing third-party client SDKs and clients in advance of the release, and will work with the projects if action is needed. So far we&#x27;ve confirmed that other popular SDK&#x2F;clients including mtxclient (nheko), Matrix Dart SDK (FluffyChat), Trixnity (Timmy), Syphon, mautrix-go (Gomuks) and mautrix-python are not affected by the issues in question.&lt;&#x2F;p&gt;
&lt;p&gt;If you maintain or package a (potentially) affected E2EE-capable Matrix client and need to coordinate on the release, please contact &lt;a href=&quot;mailto:security@matrix.org&quot;&gt;security@matrix.org&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;We advise to upgrade as soon as possible after the patched versions are released.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;Thank you for your patience while we work to resolve this issue.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security release of matrix-appservice-irc 0.35.0 (High severity)</title>
    <published>2022-09-13T16:56:43+00:00</published>
    <updated>2022-09-13T16:56:43+00:00</updated>
    <author>
      <name>Denis Kasak</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2022/09/13/security-release-of-matrix-appservice-irc-0-35-0-high-severity/" type="text/html"/>
    <id>https://matrix.org/blog/2022/09/13/security-release-of-matrix-appservice-irc-0-35-0-high-severity/</id>
    <content type="html">&lt;p&gt;We&#x27;ve released a new version of matrix.org&#x27;s node-irc 1.3.0 and
matrix-appservice-irc 0.35.0, to patch several security issues:&lt;&#x2F;p&gt;
&lt;ul&gt;
&lt;li&gt;IRC mode operator confusion (Low, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;security&#x2F;advisories&#x2F;GHSA-cq7q-5c67-w39w&quot;&gt;GHSA-cq7q-5c67-w39w&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Parsing issue leading to room takeovers (High, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;security&#x2F;advisories&#x2F;GHSA-xvqg-mv25-rwvw&quot;&gt;GHSA-xvqg-mv25-rwvw&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;li&gt;Undisclosed issue (Moderate, &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;security&#x2F;advisories&#x2F;GHSA-r3p6-cg2c-c4qw&quot;&gt;GHSA-r3p6-cg2c-c4qw&lt;&#x2F;a&gt;)&lt;&#x2F;li&gt;
&lt;&#x2F;ul&gt;
&lt;p&gt;The details of the final vulnerability will be released at a later date,
pending an audit of the codebase to ensure it&#x27;s not affected by other similar
vulnerabilities.&lt;&#x2F;p&gt;
&lt;p&gt;The vulnerabilities have been patched in node-irc version 1.3.0 and
matrix-appservice-irc 0.35.0. You can get the release on
&lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;matrix-appservice-irc&#x2F;releases&quot;&gt;Github&lt;&#x2F;a&gt;.&lt;&#x2F;p&gt;
&lt;p&gt;The bridges running on the Libera Chat, OFTC and other networks bridged by the
Matrix.org Foundation have been patched.&lt;&#x2F;p&gt;
&lt;p&gt;&lt;strong&gt;Please upgrade your IRC bridge as soon as possible.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;The above vulnerabilities were reported by &lt;a href=&quot;https:&#x2F;&#x2F;valentin-lorentz.fr&#x2F;&quot;&gt;Val
Lorentz&lt;&#x2F;a&gt;. Thank you!&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security releases: matrix-js-sdk 19.4.0 and matrix-react-sdk 3.53.0</title>
    <published>2022-08-31T18:13:45+00:00</published>
    <updated>2022-08-31T18:13:45+00:00</updated>
    <author>
      <name>Denis Kasak</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2022/08/31/security-releases-matrix-js-sdk-19-4-0-and-matrix-react-sdk-3-53-0/" type="text/html"/>
    <id>https://matrix.org/blog/2022/08/31/security-releases-matrix-js-sdk-19-4-0-and-matrix-react-sdk-3-53-0/</id>
    <content type="html">&lt;p&gt;Today we are issuing security releases of matrix-js-sdk and matrix-react-sdk to
patch a couple of High severity vulnerabilities (reserved as
&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE%2D2022%2D36059&quot;&gt;CVE-2022-36059&lt;&#x2F;a&gt;
for the matrix-js-sdk and
&lt;a href=&quot;https:&#x2F;&#x2F;cve.mitre.org&#x2F;cgi-bin&#x2F;cvekey.cgi?keyword=CVE%2D2022%2D36060&quot;&gt;CVE-2022-36060&lt;&#x2F;a&gt;
for the matrix-react-sdk).&lt;&#x2F;p&gt;
&lt;p&gt;Affected clients include those which depend on the affected libraries, such as
Element Web&#x2F;Desktop and Cinny. Releases of the affected clients will follow
shortly. We advise users of those clients to upgrade at their earliest
convenience.&lt;&#x2F;p&gt;
&lt;p&gt;The vulnerabilities give an adversary who you share a room with the ability to
carry out a denial-of-service attack against the affected clients, making it
not show all of a user&#x27;s rooms or spaces and&#x2F;or causing minor temporary
corruption.&lt;&#x2F;p&gt;
&lt;p&gt;The full vulnerability details will be disclosed at a later date, to give
people time to upgrade and us to perform a more thorough audit of the codebase.&lt;&#x2F;p&gt;
&lt;p&gt;Note that while the vulnerability was to our knowledge never exploited
maliciously, some unintentional public testing has left some people affected by
the bug. We made a best effort to sanitize this to stop the breakage. If you
are affected, you may still need to clear the cache and reload your Matrix
client for it to take effect.&lt;&#x2F;p&gt;
&lt;p&gt;We thank &lt;a href=&quot;https:&#x2F;&#x2F;valentin-lorentz.fr&#x2F;&quot;&gt;Val Lorentz&lt;&#x2F;a&gt; who discovered and
reported the vulnerability over the weekend.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
<entry xml:lang="en">
    <title>Security release: Synapse 1.61.1</title>
    <published>2022-06-28T16:19:45+00:00</published>
    <updated>2022-06-28T16:19:45+00:00</updated>
    <author>
      <name>Brendan Abolivier</name>
    </author>
    <link rel="alternate" href="https://matrix.org/blog/2022/06/28/security-release-synapse-1-61-1/" type="text/html"/>
    <id>https://matrix.org/blog/2022/06/28/security-release-synapse-1-61-1/</id>
    <content type="html">&lt;p&gt;Hey everyone!&lt;&#x2F;p&gt;
&lt;p&gt;Today we&#x27;re exceptionally releasing &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;releases&#x2F;tag&#x2F;v1.61.1&quot;&gt;Synapse
1.61.1&lt;&#x2F;a&gt;, which comes
as a security release. &lt;strong&gt;Server administrators are encouraged to update as soon as
possible.&lt;&#x2F;strong&gt;&lt;&#x2F;p&gt;
&lt;p&gt;This release fixes a vulnerability with Synapse&#x27;s URL preview feature. URL
previews of some web pages can lead to unbounded recursion, causing the request
to either fail, or in some cases crash the running Synapse process.&lt;&#x2F;p&gt;
&lt;p&gt;Homeservers with the &lt;code&gt;url_preview_enabled&lt;&#x2F;code&gt; configuration option set to &lt;code&gt;false&lt;&#x2F;code&gt;
(the default value) are unaffected. Instances with the &lt;code&gt;enable_media_repo&lt;&#x2F;code&gt;
configuration option set to &lt;code&gt;false&lt;&#x2F;code&gt; are also unaffected, as this also disables
the URL preview functionality.&lt;&#x2F;p&gt;
&lt;p&gt;Server administrators who are unable to update Synapse should disable URL
previews by setting &lt;code&gt;url_preview_enabled: false&lt;&#x2F;code&gt; in their configuration file.
They can also delegate URL preview to a separate, dedicated worker to ensure the
process crashing does not impact other functionality of Synapse.&lt;&#x2F;p&gt;
&lt;p&gt;Please see &lt;a href=&quot;https:&#x2F;&#x2F;github.com&#x2F;matrix-org&#x2F;synapse&#x2F;security&#x2F;advisories&#x2F;GHSA-22p3-qrh9-cx32&quot;&gt;this security
advisory&lt;&#x2F;a&gt;
for more information.&lt;&#x2F;p&gt;
</content>
</entry>

    
    
</feed>
