You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository has been archived by the owner on Apr 26, 2024. It is now read-only.
Synapse does not check that the chain in X-Forwarded-For is trusted, and so an attacker can spoof their IP address if the reverse proxy does not sanitize X-Forwarded-For. Ideally, we should be able to pass a set of trusted IP addresses, and synapse should only trust X-Forwarded-For if: 1) the request comes from a trusted IP address, and 2) every IP address in X-Forwarded-For, other than the first one, is trusted.
This can be mitigated by ensuring that the X-Forwarded-For header is sanitized before it hits synapse. For example, the public-facing reverse-proxy should remove any X-Forwarded-For header that it receives.
The IP address seems to be used for:
checking that AS requests come from trusted IP addresses
rate limiting registration requests
UI auth (maybe?)
request logging
last-seen IP address for devices
The text was updated successfully, but these errors were encountered:
I've just realised that our reverse proxy docs say nothing about sanitizing the X-Forwarded-For header, so this might be a bit more of an urgent security problem than I thought.
my suggested approach for fixing this would be to allow a trusted_proxies setting in the listener configuration, which is a list of IP addresses to be compared against the client IP and X-Forwarded-For addresses. x_forwarded can be deprecated.
Synapse does not check that the chain in
X-Forwarded-For
is trusted, and so an attacker can spoof their IP address if the reverse proxy does not sanitizeX-Forwarded-For
. Ideally, we should be able to pass a set of trusted IP addresses, and synapse should only trustX-Forwarded-For
if: 1) the request comes from a trusted IP address, and 2) every IP address in X-Forwarded-For, other than the first one, is trusted.This can be mitigated by ensuring that the
X-Forwarded-For
header is sanitized before it hits synapse. For example, the public-facing reverse-proxy should remove anyX-Forwarded-For
header that it receives.The IP address seems to be used for:
The text was updated successfully, but these errors were encountered: