-
Notifications
You must be signed in to change notification settings - Fork 401
MSC4291: Room IDs as hashes of the create event #4291
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This comment was marked as resolved.
This comment was marked as resolved.
Co-authored-by: Travis Ralston <travpc@gmail.com> Co-authored-by: Alexey Rusakov <Kitsune-Ral@users.sf.net> Co-authored-by: Richard van der Hoff <1389908+richvdh@users.noreply.github.com> Co-authored-by: Matthias Ahouansou <matthias@ahouansou.cz>
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Implementation requirements:
- Server - [WIP] MSC4291 implementation element-hq/synapse#18685
- Evidence of clients not crashing
Some clients to test/verify (incomplete list):
- matrix.to web
- Element Web (/Desktop)
- Legacy Element Android
- Legacy Element iOS
- matrix-rust-sdk
- Element X Android
- Element X iOS
- Fractal
- Cinny
- Nheko
- Quotient/Quaternion
- NeoChat
- Rory&::LibMatrix
- matrix-bot-sdk (both Element fork and upstream; covers most moderation tooling/bots)
- Draupnir
- Hydrogen
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Draupnir will crash, and please do not assume that ticking off the matrix-bot-sdk will cover us in future. We have our own infrastructure for parsing matrix events and matrix identifiers.
- https://github.com/the-draupnir-project/matrix-basic-types includes parsing and type brands for matrix identifiers (potentially illegally in the case of room identifiers, but we do so because it is important for us to be able to identify the origin of rooms).
- https://github.com/Gnuxie/matrix-protection-suite/ parses events, and will crash if
room_id
is removed from the top level of events. Not sure whether that specifically is illegal or not. We have a tolerant strategy for handling other fields that don't match the schema (including all content), but this isn't the case forroom_id
andevent_id
.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Fractal doesn't crash with the changes in this MSC.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Resolved in Rory&::LibMatrix as of https://cgit.rory.gay/matrix/LibMatrix.git/commit/?id=c39d18efd0e6a610d2dc29832407e99e0079bc13
MSCs proposed for Final Comment Period (FCP) should meet the requirements outlined in the checklist prior to being accepted into the spec. This checklist is a bit long, but aims to reduce the number of follow-on MSCs after a feature lands. SCT members: please check off things you check for, and raise a concern against FCP if the checklist is incomplete. If an item doesn't apply, prefer to check it rather than remove it. Unchecking items is encouraged where applicable. Checklist:
|
It is also desirable to know the creator's server name without having to join and get the full create event | ||
for Trust & Safety purposes. The create event in invites can be spoofed, as can the room ID, but spoofing the | ||
room ID makes the invite unusable whereas spoofing the create event does not. We could rely on the `sender` | ||
instead, but for this to be effective it would be important for servers to use the `sender` domain for routing | ||
purposes, such that if the `sender` was invalid it would cause the invite to be unusable. On the contrary, users | ||
unfamiliar with Matrix may see a room ID like `!OGEhHVWSdvArJzumhm:matrix.org` and think that `matrix.org` hosts/moderates/ | ||
is somehow responsible for the room in some way. By dropping the domain, we clearly express that the creator domain | ||
may not be responsible for the contents of the room. |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
- Updated to matrix-basic-types 1.4.0 which changes the regex validating room ids. - Changed the package override so that all dependencies use matrix-basic-types 1.4.0, including the matrix-protection-suite. - Removed code that tries to store details about discovered rooms in the room takdedown protection. These were unreliable for so many reasons and also are now broken given the room origin cannot be extracted from the room id. Details for why this is can be found in the reviews of matrix-org/matrix-spec-proposals#4291.
- Updated to matrix-basic-types 1.4.0 which changes the regex validating room ids. - Changed the package override so that all dependencies use matrix-basic-types 1.4.0, including the matrix-protection-suite. - Removed code that tries to store details about discovered rooms in the room takdedown protection. These were unreliable for so many reasons and also are now broken given the room origin cannot be extracted from the room id. Details for why this is can be found in the reviews of matrix-org/matrix-spec-proposals#4291.
- Updated to matrix-basic-types 1.4.0 which changes the regex validating room ids. - Changed the package override so that all dependencies use matrix-basic-types 1.4.0, including the matrix-protection-suite. - Removed code that tries to store details about discovered rooms in the room takdedown protection. These were unreliable for so many reasons and also are now broken given the room origin cannot be extracted from the room id. Details for why this is can be found in the reviews of matrix-org/matrix-spec-proposals#4291.
- Updated to matrix-basic-types 1.4.0 which changes the regex validating room ids. - Changed the package override so that all dependencies use matrix-basic-types 1.4.0, including the matrix-protection-suite. - Removed code that tries to store details about discovered rooms in the room takdedown protection. These were unreliable for so many reasons and also are now broken given the room origin cannot be extracted from the room id. Details for why this is can be found in the reviews of matrix-org/matrix-spec-proposals#4291.
This proposal on it's own is fine if changed slightly, however packaging it alongside a mandatory security-related version bump is very neglectful behaviour towards both paid and unpaid maintainers of matrix software. There are many legitimate reasons as to why origin homeservers should be identifiable just from their room id, some of which are specifically outlined in this proposal, however are ignored in favour of breaking many moderation tools for... a very specific edge-case where a server gains knowledge of a room which could only be created by a malicious server? I don't see any reason as to why this new format wouldn't be able to retain all of the existing information while also providing protection against impersonation or id "downgrading". i.e: Given those at the foundation and at element have given their approval I doubt anything can be said or done that would change this MSC in any way, however I am leaving this comment in spite of that to voice my own disapproval. |
The final comment period, with a disposition to merge, as per the review above, is now complete. |
(FCP is actually not finished due to outstanding comments) |
Review feedback from the last several days, including from various rooms, has been addressed and as such the FCP is now finished. |
Rendered
(Written by Matthew as Matrix project lead (while on the clock as Element CTO) and Kegan as Element staff eng)
SCT Stuff:
FCP tickyboxes
MSC checklist