Skip to content
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

MSC4163: Make ACLs apply to EDUs #4163

Merged
merged 13 commits into from
Aug 5, 2024
45 changes: 45 additions & 0 deletions proposals/4163-make-acls-apply-to-edus.md
Copy link
Member

@tulir tulir Jul 7, 2024

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Implementation requirements:

  • Server

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Original file line number Diff line number Diff line change
@@ -0,0 +1,45 @@
# MSC4163: Make ACLs apply to EDUs
Kladki marked this conversation as resolved.
Show resolved Hide resolved
Kladki marked this conversation as resolved.
Show resolved Hide resolved

[Access Control Lists](https://spec.matrix.org/v1.11/client-server-api/#server-access-control-lists-acls-for-rooms)
(also known as ACLs) are used to prevent other servers from participating in a room at a federation level,
covering many federation API endpoints, including
[`/send`](https://spec.matrix.org/v1.11/server-server-api/#put_matrixfederationv1sendtxnid). However, while ACLs
are applied on a per-PDU basis on this endpoint, they are not applied to EDUs at all. Considering that some EDUs
are specific to certain rooms (e.g. read receipts & typing indicators), it makes sense to apply ACLs to them as well.


## Proposal

All EDUs which are local to a specific room should have ACLs applied to them. This means that for the EDUs currently
Kladki marked this conversation as resolved.
Show resolved Hide resolved
in the spec, ACLs would only apply to receipts and typing notifications. Examples of how ACLs should be enforced for
those two types of EDUs are as follows:
- For
[typing notifications (`m.typing`)](https://spec.matrix.org/v1.11/server-server-api/#typing-notifications),
the `room_id` field inside `content` should be checked, with the typing notification rejected if the `origin`
Kladki marked this conversation as resolved.
Show resolved Hide resolved
of the request is a server which is forbidden by the room's ACL.
- For [read receipts (`m.receipt`)](https://spec.matrix.org/v1.11/server-server-api/#receipts), all receipts
inside a `room_id` inside `content` should be rejected if the `origin` of the request is forbidden by the
room's ACL.

## Potential issues

None considered.

## Alternatives

Leave things as-is, which wouldn't be that big of a deal when you consider that this would only apply
to typing notifications and read receipts currently, which don't allow for very significant disruption inside
a room. However, as ACLs are meant to prevent certain servers from participating in a room at all, it makes
sense to apply ACLs to EDUs which are local to certain rooms, as they are a form of participation.

## Security considerations

None considered.

## Unstable prefix

None required, as no new fields or endpoints were added.
Kladki marked this conversation as resolved.
Show resolved Hide resolved

## Dependencies

None.