This Week in Matrix 2024-09-13

13.09.2024 00:00 — This Week in Matrix Thib (m.org)

Matrix Live

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} says

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

  • No MSCs are in FCP.

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Spec Updates

A further call to developers, protocol designers, and future MSC writers to attend the "Authenticated media & how to ship spec features" and MSC Process Guidance talks in LAB 4 at this year's Matrix Conference! We'll be discussing the spec process itself, as well as how large features (and breaking changes in the spec) get designed, developed, and deployed with support from the MSC process.

If you're thinking about how to get your idea for a feature out in the hands of users, these talks are for you!

Continue reading…

This Week in Matrix 2024-09-06

06.09.2024 19:30 — This Week in Matrix Thib (m.org)

Matrix Live

Dept of Spec 📜

TravisR announces

Earlier in the week matrix.org started requiring authentication to access media, and it looks like most users didn't notice (a good thing)! Smooth rollouts like this are thanks in large part to the developer ecosystem preparing users for the change with code - thank you to everyone who has been working hard at improving how media is shared in Matrix ❤️.

There's always going to be problems which reveal themselves after the deployment happens, and it looks like most of the issues we're tracking have workarounds or patches on the way. If you're seeing errors for images/files, please update your client. Web users may need to refresh the page multiple times before things start working because of how browsers (don't) work. If you're still seeing issues, it may be a bug in your client: please report it to the developers so they can take a look.

Developers, protocol designers, and future MSC writers may also be interested in "Authenticated media & how to ship spec features" in LAB 4 at this year's Matrix Conference in just a couple of weeks! We'll be discussing how such a massive feature (and technically breaking change in the spec) gets designed, developed, and deployed with support from the MSC process - if you're thinking about how to get your idea for a feature out in the hands of users, this talk is for you. The advice should be transferable to features smaller than authenticated media too, hopefully 😇

Continue reading…

This Week in Matrix 2024-08-30

30.08.2024 19:00 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

TravisR announces

Something we're excited to see is several servers have already enacted their media freeze for unauthenticated media! Matrix.org is doing so on Wednesday, September 4th, 2024 (just a few days away) during UK business hours. Other Synapse admins can enable this freeze on their servers by setting enable_authenticated_media: True in their homeserver.yaml. Admins using other server projects should consult their documentation, though please note that some projects are actively working on adding relevant support.

For those interested in statistics, matrix.org is seeing about 80% of requests being authenticated so far. We anticipate this number will rise before Wednesday, but not significantly.

For more information on the media freeze, check out our blog post: https://matrix.org/blog/2024/06/26/sunsetting-unauthenticated-media/

Continue reading…

Libolm Deprecation

27.08.2024 14:00 — Cryptography Neil Johnson

It’s been a few weeks since we announced the deprecation of libolm. Since then, we’ve fielded some questions on the subject and thought it would be helpful to collect this context in a blog post.

First up, a recap. We first introduced the idea that libolm would make way for vodozemac in 2022, following the Gematik sponsored audit from Least Authority.

Since then, various client implementations have migrated to vodozemac. Notably, all versions of Element, Element X, Fractal, iamb and other matrix-rust-sdk based clients and their forks already use vodozemac, and platforms using matrix-js-sdk can also use vodozemac instead of libolm.

In This Week in Matrix 2024-08-02 Matthew formally announced the deprecation of libolm in favour of vodozemac.

Heads up that we have officially marked the original C/C++ libolm implementation as deprecated, as warned back in May 2022 when we announced the Rust vodozemac implementation as the successor to libolm. The rationale for doing so now is that all of the SDKs maintained by the core team at github.com/matrix-org now support vodozemac, and the majority of apps built on top of them have now successfully switched over to vodozemac. Meanwhile, we simply don't have bandwidth to maintain and support both vodozemac and libolm, so our maintenance will be focused on vodozemac going forwards. You can find the official deprecation notice here.

Matthew then followed up in This Week in Matrix 2024-08-16 in light of the coordinated disclosure by security researcher Soatok of potential security weaknesses in libolm underpinned by the primitives employed by the library.

Quoting selectively:

We're not aware of any way to actually exploit these weaknesses over the network, but we continue to strongly recommend developers to migrate to vodozemac (or fork libolm to add better primitives). We should have done a better job of explicitly deprecating libolm sooner (and/or improving its primitives) – but all of our focus has been on ensuring that vodozemac is excellent, to the detriment of libolm. Apologies to those who are now finding themselves expediting libolm replacement.

So what does this mean if you are building an app that has a dependency on libolm?

  • We have been public from the outset that that libolm's primitives are functionally correct, but not resilient to timing attacks
  • We do not believe this to be a high-severity issue for Matrix because an attack would require sending very large volumes of messages with very accurate timings targeting the same key material – while in practice Matrix implementations have short-lived AES key material (due to ratcheting), very noisy timings (due to traffic topology being client ↔ server ↔ server ↔ client, with persistence steps at each hop), as well as traffic rate-limiting. As a result, we do not believe that an attack over the network is feasible. It is possible that a local attack might work – but if the attacker has local access to your device, we consider you to already be compromised.
  • Even though it is a theoretical rather than practical weakness, we still wanted to fix it. We chose to do so with the shift to vodozemac, which provides both first-class, audited cryptographic primitives provided by Rust, while also avoiding the possibility of an entire class of weaknesses, such as the buffer overflows previously found and mitigated in libolm.

We've deprecated libolm simply because we do not have the bandwidth to replace its primitives as well as maintain and evolve vodozemac.

Given the above, in the context of Matrix, libolm is currently safe to use in a practical sense (with the above caveats). However, we strongly encourage all app developers to chart a path away from libolm in favour of vodozemac.

Additionally, we have registered three CVEs to track recently highlighted vulnerabilities.

Note: The CVEs have since been edited post-submission to conflate libolm with the Olm protocol itself. A genuine protocol vulnerability would be much more serious so we are working with MITRE to clarify.

The good news is that if you are building on matrix-rust-sdk or matrix-js-sdk they are already vodozemac backed. However, libolm is still a dependency of both libraries, and it is worth explaining why.

matrix-rust-sdk

  • libolm is used only in testing and is not an operational dependency (it is used to check that PkEncryption in matrix-sdk-crypto is compatible with libolm's). We have updated its dependency specification to make this clearer. We do not intend to remove this dependency in the short term.

matrix-js-sdk

  • libolm is referenced here, as a hangover from recent work to migrate from libolm to vodozemac. This file will be removed.

Additionally, the legacy mobile SDKs, matrix-android-sdk2 and matrix-ios-sdk, also have dependencies on libolm. It is used there for the following:

  • To encrypt the bodies of the requests for the Element maintained content scanner project. These references are unused in any publicly available application and will be removed.
  • To support migration of users from legacy crypto to Rust crypto. Given the adoption of Rust crypto in March 2023 for iOS and July 2023 for Android we will remove this support in the near future, once we have confirmed that the vast majority of users have migrated.
  • For unused legacy QR code log-in functionality in matrix-android-sdk2. This will be removed shortly.

To conclude, we see the deprecation as a natural step in a multi-year process. In retrospect, we could've been a lot more explicit in explaining the context of the libolm deprecation and offer our apologies. Hopefully, this post makes things clearer.

However, by formally deprecating libolm we make the direction of travel extremely clear and we recommend all projects adopt a vodozemac-backed solution promptly or alternatively fork libolm and upgrade the primitives.

If you have any questions or concerns, please reach out to security@matrix.org.

This Week in Matrix 2024-08-23

23.08.2024 10:00 — This Week in Matrix Thib

Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons (he/they) says

The Foundation has updated its policy for accepting upstream contributions to our projects. We no longer require the use of "real" or "legal" names as part of the Developer Certificate of Origin (DCO). We thank the community members who reached out to let us know that our policy was a barrier for them, and we are excited to welcome contributions from people who were previously excluded.

Continue reading…

This Week in Matrix 2024-08-16

16.08.2024 18:00 — This Week in Matrix MTRNord

Matrix Live

Dept of Status of Matrix 🌡️

Josh Simmons (he/they) reports

I’m pleased to report I've been busily onboarding the elected Governing Board members, and we've already started having important conversations about how we continue to move the Foundation forward to support the Matrix ecosystem.

This week Matthew and I published a blog post, significantly informed by community conversations and work with the Governing Board, on a process to define a governance framework for the projects we steward. Of note, in this post we are also drawing a line in the sand and making it clear: some projects, like the spec, test suites, SDKs, and shared cryptographic libraries, are so important that they require ongoing stewardship, under a permissive open source licence, by an organisation that is accountable to the ecosystem. To put a point on it: the Foundation will seek to fund and coordinate maintenance and development of core projects even if faced with a competing fork.

Learn more in our blog post. We’d love to hear from you as we work together to update our project governance, and encourage you to reach out to your representatives on the Governing Board along the way.

Continue reading…

Protecting the projects at the heart of the Matrix ecosystem

15.08.2024 19:00 — Foundation Josh Simmons , Matthew Hodgson

There have been many changes at the Foundation in the last couple of years. We’ve added independent leadership, attracted members, continued working towards sustainability, and expanded our open governance to establish a Governing Board to become better and more capable stewards of the protocol and ecosystem. We’re still in a period of organisational transition, getting into the groove with the Governing Board, focusing on the Spec Core Team, and building the technical and financial foundation for independence.

We’ve also been asking ourselves what it means for a project to be “core” to the Foundation, and how the Foundation should relate to and work with the people who maintain those projects. These are fundamental questions for any open source foundation, and they’ve become even more pressing for us since Element switched developing Synapse and several other projects to AGPLv3, rather than contributing under the Foundation as Apache v2.

This blog post explores our context and sets out to start a discussion on how we should move forward. Already, we’ve been having these discussions in Foundation rooms and on the Governing Board, and we look forward to bringing more people into this discussion so that we can ship a framework that delivers on our mission and meets the needs of the Matrix ecosystem.

Continue reading…

This Week in Matrix 2024-08-09

09.08.2024 18:00 — This Week in Matrix MTRNord

Dept of Spec 📜

Authenticated Media

TravisR says

Progress on authenticated media continues! As of today, beta.matrix.org has now frozen its media to allow client and server developers, as well as homeserver owners, to test how their stuff responds when a media freeze is in place. This milestone brings us one step closer to matrix.org itself freezing unauthenticated media, described in more detail on the blog: https://matrix.org/blog/2024/06/26/sunsetting-unauthenticated-media/

The happy path for interacting with beta.matrix.org should be:

  1. Log in or register a new account
  2. Note that media from before today (August 7th) loaded fine
  3. Upload something new
  4. Still loads fine (including over federation)

If you run into issues or bugs, let us know in the #matrix-client-developers:matrix.org or #homeservers-dev:matrix.org rooms on Matrix. We're around to help make this as smooth of a transition as possible!

Weekly spec update

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/proposals.

New MSCs:

MSCs in Final Comment Period:

No new MSCs entered FCP this week.

Accepted MSCs:

Closed MSCs:

No MSCs were closed this week.

Spec Updates

If you are a client or homeserver developer, make sure you read up on the upcoming authenticated media!

Apart from that the spec team has been busy combing through the general spec backlog. Identifying MSCs which appear stuck waiting for SCT input is particularly helpful - drop some links in Office of the Matrix Spec Core Team with a description of how it appears stuck.

Continue reading…

This Week in Matrix 2024-08-02

02.08.2024 19:30 — This Week in Matrix Thib

Dept of Spec 📜

Andrew Morgan (anoa) {he/him} says

Here's your weekly spec update! The heart of Matrix is the specification - and this is modified by Matrix Spec Change (MSC) proposals. Learn more about how the process works at https://spec.matrix.org/proposals.

MSC Status

New MSCs:

MSCs in Final Comment Period:

Accepted MSCs:

  • No MSCs were accepted this week.

Closed MSCs:

Spec Updates

It's another week, and there's been steady progress on a few MSCs. Other than those listed above, there was a partial implementation of MSC4133: Support for custom profile fields for Synapse. Personally I find the prospect of finally being able to attach arbitrary profile information to users. Very exciting!

Continue reading…

The Matrix Conference Has an Exciting Lineup

01.08.2024 12:00 — Conference Thib

We imagined The Matrix Conference as a gathering place for hackers, project managers, digital sovereignty leaders, and innovators. I’m proud to announce that we definitely succeeded in building a schedule covering that range of topics!

We received more than 60 high-quality proposals and ended up building 5 tracks over the course of 2 “core” conference days. The tracks cover everything from sovereignty and collaboration in the public sector to digital rights, Matrix internals, the social impact of Matrix, and Matrix as the foundation for products.

Continue reading…