MSC: Search Redirection
parent
9deddd1558
commit
3a8be1e8ed
@ -0,0 +1,128 @@
|
|||||||
|
# MSC4228: Search Redirection
|
||||||
|
|
||||||
|
**Content Warning**: This proposal discusses mechanisms to reduce searches for illegal or harmful
|
||||||
|
content on a homeserver. This proposal links to research which discusses the impact of Child Sexual
|
||||||
|
Abuse Material (CSAM).
|
||||||
|
|
||||||
|
Given the sensitive nature of the topic, comments, suggestions, and concerns may be sent directly to
|
||||||
|
the author. It is important that all members of our community contribute to a safe and positive review
|
||||||
|
atmosphere.
|
||||||
|
|
||||||
|
The author can be reached on Matrix at `@travis:t2l.io` or via email at `travisr@matrix.org`. If you
|
||||||
|
prefer to contact the Trust & Safety (T&S) team instead, please email `abuse@matrix.org`. The author
|
||||||
|
is a member of the T&S team, and will ensure a different member of the team reviews `abuse@matrix.org`
|
||||||
|
emails.
|
||||||
|
|
||||||
|
----
|
||||||
|
|
||||||
|
A common approach for tackling abuse is to prevent the content from being presented to users in any
|
||||||
|
way, disincentizing the use of the platform for sharing that particular type of content. The common
|
||||||
|
way users attempt to find content on Matrix is through the [room directory](https://spec.matrix.org/v1.12/client-server-api/#listing-rooms)
|
||||||
|
on their local server. With the current specification, there is no opportunity for a server to directly
|
||||||
|
say "you can't search for that here". There is additionally no way for the server to provide help and
|
||||||
|
support to the user when their search is denied.
|
||||||
|
|
||||||
|
This proposal adds an error code to the room directory search endpoints to "redirect" user searches
|
||||||
|
to help or supportive resources rather than serve rooms matching their query. This error code is
|
||||||
|
optional and intended to be used only when a user searches for illegal material. Users are expected
|
||||||
|
to be presented with resources which can help them stop, or not start, offences related to the content
|
||||||
|
instead of the content itself.
|
||||||
|
|
||||||
|
This proposal is heavily based upon the research of the Lucy Faithfull Foundation, where a
|
||||||
|
[chatbot was run on Pornhub UK](https://www.lucyfaithfull.org.uk/featured-news/stop-it-now-internet-watch-foundation-and-pornhub-launch-first-of-its-kind-chatbot-to-prevent-child-sexual-abuse.htm)
|
||||||
|
to intercept searches for explicit imagery of children and instead direct users to [Stop It Now](https://www.stopitnow.org.uk/).
|
||||||
|
More recently, the University of Tasmania published a [report](https://www.lucyfaithfull.org.uk/files/reThink_Chatbot_Evaluation_Report.pdf)
|
||||||
|
demonstrating that the 18-month approach works and led to a reduction in (potential) harm. An analysis
|
||||||
|
of the report can be found [on the Lucy Faithful Foundation's website](https://www.lucyfaithfull.org.uk/featured-news/pioneering-chatbot-reduces-searches-for-illegal-sexual-images-of-children.htm).
|
||||||
|
|
||||||
|
To assist in better user experience, servers using this MSC should consider using [MSC4176](https://github.com/matrix-org/matrix-spec-proposals/pull/4176)
|
||||||
|
as an optional dependency as well.
|
||||||
|
|
||||||
|
## Proposal
|
||||||
|
|
||||||
|
The room directory search endpoints (listed below) MAY return a `403 M_FORBIDDEN` error at the server's
|
||||||
|
discretion. The `error` message SHOULD be human readable and presented to the end user performing the
|
||||||
|
search. If [MSC4176](https://github.com/matrix-org/matrix-spec-proposals/pull/4176) or similar is
|
||||||
|
accepted, the translatable error is to be used as the human readable representation instead.
|
||||||
|
|
||||||
|
The endpoints affected are:
|
||||||
|
* [`POST /_matrix/client/v3/publicRooms`](https://spec.matrix.org/v1.12/client-server-api/#post_matrixclientv3publicrooms)
|
||||||
|
* [`POST /_matrix/federation/v1/publicRooms`](https://spec.matrix.org/v1.12/server-server-api/#post_matrixfederationv1publicrooms)
|
||||||
|
|
||||||
|
For the federation endpoint specifically, the local user SHOULD have the remote server's error proxied
|
||||||
|
straight through to them, however some implementations may prefer to replace the error before serving
|
||||||
|
it to their users. This can help reduce the potential of remote Cross-Server Scripting (XSS) attacks.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
|
||||||
|
A user makes a request to `/_matrix/client/v3/publicRooms` with a search term of `something illegal`.
|
||||||
|
The user's local server decides that it will not serve rooms matching that search term, and instead
|
||||||
|
responds with the following 403 error:
|
||||||
|
|
||||||
|
```json5
|
||||||
|
{
|
||||||
|
"errcode": "M_FORBIDDEN",
|
||||||
|
|
||||||
|
// Servers are encouraged to research phrasing which achieves their intended result. The example here
|
||||||
|
// is based on zero research.
|
||||||
|
"error": "No results are available for potentially illegal material. https://www.stopitnow.org.uk/helpline/ may be able to help you if you're searching for illegal content.",
|
||||||
|
|
||||||
|
// Optional component from MSC4176
|
||||||
|
"messages": {
|
||||||
|
"en-US": "No results are available for potentially illegal material. https://www.stopitnow.org.uk/helpline/ may be able to help you if you're searching for illegal content.",
|
||||||
|
"fr": "Aucun résultat n'est disponible pour le contenu potentiellement illégal. https://www.stopitnow.org.uk/helpline/ peut peut-être vous aider si vous recherchez du contenu illégal."
|
||||||
|
}
|
||||||
|
}
|
||||||
|
```
|
||||||
|
|
||||||
|
The user sees a dialog containing the error message and link they can visit.
|
||||||
|
|
||||||
|
In another case, a user searches `remote.example.org` through their local server with a search term
|
||||||
|
of `something illegal`. Their server doesn't perform any filtering on the request, and passes it along
|
||||||
|
to `remote.example.org` over federation. `remote.example.org` intercepts the search and returns an
|
||||||
|
error similar to the one used in the prior example. The user's local server sees the error and decides
|
||||||
|
to proxy it to the user as-is. The user sees a dialog containing the error message and link they can
|
||||||
|
visit.
|
||||||
|
|
||||||
|
## Potential issues
|
||||||
|
|
||||||
|
Servers, particularly over federation, can use this to restrict or filter content beyond illegal
|
||||||
|
material. This is already possible by returning reduced result sets, or by returning errors in a
|
||||||
|
non-compliant manner.
|
||||||
|
|
||||||
|
## Alternatives
|
||||||
|
|
||||||
|
Specific error codes are a potential alternative, however due to the wide variety of illegal material
|
||||||
|
and jurisdictions, this proposal has determined that a single, generic, error code with specific message
|
||||||
|
more easily covers the use cases.
|
||||||
|
|
||||||
|
## Security considerations
|
||||||
|
|
||||||
|
Mentioned in the proposal text, it is possible for a remote server (or local server for that matter)
|
||||||
|
to return a malicious error message which the client may ultimately parse. Clients should avoid XSS
|
||||||
|
concerns by not parsing error messages, or by applying appropriate sandboxes and measures to contain
|
||||||
|
the scope of a potential breach. Similarly, servers should consider whether they proxy errors unmodified
|
||||||
|
from remote servers, or if they replace those errors. Some servers may establish "trusted remotes"
|
||||||
|
where they are okay to proxy errors and replace errors from all other servers.
|
||||||
|
|
||||||
|
## Safety considerations
|
||||||
|
|
||||||
|
This proposal is specifically intended to increase the relative safety of Matrix by reducing access
|
||||||
|
to content which is generally accepted to be illegal. Specifically, the matrix.org homeserver plans
|
||||||
|
to utilize this MSC (or similar) to disable access to CSAM, thus discouraging the content from being
|
||||||
|
created in the first place.
|
||||||
|
|
||||||
|
Additionally, as noted in the University of Tasmania's [report](https://www.lucyfaithfull.org.uk/files/reThink_Chatbot_Evaluation_Report.pdf),
|
||||||
|
this feature provides an opportunity to help individuals who may not know how to ask for help related
|
||||||
|
to their searches, and prevent offences from occurring.
|
||||||
|
|
||||||
|
## Unstable prefix
|
||||||
|
|
||||||
|
While this proposal is not considered stable, implementations should refrain from responding with 403
|
||||||
|
errors on the endpoints. This may mean an implementation is required to stay as an open Pull Request
|
||||||
|
until this MSC can become stable.
|
||||||
|
|
||||||
|
## Dependencies
|
||||||
|
|
||||||
|
This proposal supports [MSC4176](https://github.com/matrix-org/matrix-spec-proposals/pull/4176) as an
|
||||||
|
optional, value-add, dependency rather than blocker.
|
||||||
Loading…
Reference in New Issue