Merge branch 'master' into develop

This commit is contained in:
Richard van der Hoff 2019-05-03 19:25:01 +01:00
commit 836d3adcce
9 changed files with 84 additions and 19 deletions

View file

@ -1,3 +1,23 @@
Synapse 0.99.3.2 (2019-05-03)
=============================
Internal Changes
----------------
- Ensure that we have `urllib3` <1.25, to resolve incompatibility with `requests`. ([\#5135](https://github.com/matrix-org/synapse/issues/5135))
Synapse 0.99.3.1 (2019-05-03)
=============================
Security update
---------------
This release includes two security fixes:
- Switch to using a cryptographically-secure random number generator for token strings, ensuring they cannot be predicted by an attacker. Thanks to @opnsec for identifying and responsibly disclosing this issue! ([\#5133](https://github.com/matrix-org/synapse/issues/5133))
- Blacklist 0.0.0.0 and :: by default for URL previews. Thanks to @opnsec for identifying and responsibly disclosing this issue too! ([\#5134](https://github.com/matrix-org/synapse/issues/5134))
Synapse 0.99.3 (2019-04-01) Synapse 0.99.3 (2019-04-01)
=========================== ===========================

12
debian/changelog vendored
View file

@ -1,3 +1,15 @@
matrix-synapse-py3 (0.99.3.2) stable; urgency=medium
* New synapse release 0.99.3.2.
-- Synapse Packaging team <packages@matrix.org> Fri, 03 May 2019 18:56:20 +0100
matrix-synapse-py3 (0.99.3.1) stable; urgency=medium
* New synapse release 0.99.3.1.
-- Synapse Packaging team <packages@matrix.org> Fri, 03 May 2019 16:02:43 +0100
matrix-synapse-py3 (0.99.3) stable; urgency=medium matrix-synapse-py3 (0.99.3) stable; urgency=medium
[ Richard van der Hoff ] [ Richard van der Hoff ]

View file

@ -57,7 +57,8 @@ RUN apt-get update -qq -o Acquire::Languages=none \
python3-pip \ python3-pip \
python3-setuptools \ python3-setuptools \
python3-venv \ python3-venv \
sqlite3 sqlite3 \
libpq-dev
COPY --from=builder /dh-virtualenv_1.1-1_all.deb / COPY --from=builder /dh-virtualenv_1.1-1_all.deb /

View file

@ -548,11 +548,12 @@ uploads_path: "DATADIR/uploads"
# height: 600 # height: 600
# method: scale # method: scale
# Is the preview URL API enabled? If enabled, you *must* specify # Is the preview URL API enabled?
# an explicit url_preview_ip_range_blacklist of IPs that the spider is
# denied from accessing.
# #
#url_preview_enabled: false # 'false' by default: uncomment the following to enable it (and specify a
# url_preview_ip_range_blacklist blacklist).
#
#url_preview_enabled: true
# List of IP address CIDR ranges that the URL preview spider is denied # List of IP address CIDR ranges that the URL preview spider is denied
# from accessing. There are no defaults: you must explicitly # from accessing. There are no defaults: you must explicitly
@ -562,6 +563,12 @@ uploads_path: "DATADIR/uploads"
# synapse to issue arbitrary GET requests to your internal services, # synapse to issue arbitrary GET requests to your internal services,
# causing serious security issues. # causing serious security issues.
# #
# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
# listed here, since they correspond to unroutable addresses.)
#
# This must be specified if url_preview_enabled is set. It is recommended that
# you uncomment the following list as a starting point.
#
#url_preview_ip_range_blacklist: #url_preview_ip_range_blacklist:
# - '127.0.0.0/8' # - '127.0.0.0/8'
# - '10.0.0.0/8' # - '10.0.0.0/8'
@ -572,7 +579,7 @@ uploads_path: "DATADIR/uploads"
# - '::1/128' # - '::1/128'
# - 'fe80::/64' # - 'fe80::/64'
# - 'fc00::/7' # - 'fc00::/7'
#
# List of IP address CIDR ranges that the URL preview spider is allowed # List of IP address CIDR ranges that the URL preview spider is allowed
# to access even if they are specified in url_preview_ip_range_blacklist. # to access even if they are specified in url_preview_ip_range_blacklist.
# This is useful for specifying exceptions to wide-ranging blacklisted # This is useful for specifying exceptions to wide-ranging blacklisted

View file

@ -24,6 +24,7 @@ DISTS = (
"ubuntu:xenial", "ubuntu:xenial",
"ubuntu:bionic", "ubuntu:bionic",
"ubuntu:cosmic", "ubuntu:cosmic",
"ubuntu:disco",
) )
DESC = '''\ DESC = '''\

View file

@ -27,4 +27,4 @@ try:
except ImportError: except ImportError:
pass pass
__version__ = "0.99.3" __version__ = "0.99.3.2"

View file

@ -186,17 +186,21 @@ class ContentRepositoryConfig(Config):
except ImportError: except ImportError:
raise ConfigError(MISSING_NETADDR) raise ConfigError(MISSING_NETADDR)
if "url_preview_ip_range_blacklist" in config: if "url_preview_ip_range_blacklist" not in config:
self.url_preview_ip_range_blacklist = IPSet(
config["url_preview_ip_range_blacklist"]
)
else:
raise ConfigError( raise ConfigError(
"For security, you must specify an explicit target IP address " "For security, you must specify an explicit target IP address "
"blacklist in url_preview_ip_range_blacklist for url previewing " "blacklist in url_preview_ip_range_blacklist for url previewing "
"to work" "to work"
) )
self.url_preview_ip_range_blacklist = IPSet(
config["url_preview_ip_range_blacklist"]
)
# we always blacklist '0.0.0.0' and '::', which are supposed to be
# unroutable addresses.
self.url_preview_ip_range_blacklist.update(['0.0.0.0', '::'])
self.url_preview_ip_range_whitelist = IPSet( self.url_preview_ip_range_whitelist = IPSet(
config.get("url_preview_ip_range_whitelist", ()) config.get("url_preview_ip_range_whitelist", ())
) )
@ -260,11 +264,12 @@ class ContentRepositoryConfig(Config):
#thumbnail_sizes: #thumbnail_sizes:
%(formatted_thumbnail_sizes)s %(formatted_thumbnail_sizes)s
# Is the preview URL API enabled? If enabled, you *must* specify # Is the preview URL API enabled?
# an explicit url_preview_ip_range_blacklist of IPs that the spider is
# denied from accessing.
# #
#url_preview_enabled: false # 'false' by default: uncomment the following to enable it (and specify a
# url_preview_ip_range_blacklist blacklist).
#
#url_preview_enabled: true
# List of IP address CIDR ranges that the URL preview spider is denied # List of IP address CIDR ranges that the URL preview spider is denied
# from accessing. There are no defaults: you must explicitly # from accessing. There are no defaults: you must explicitly
@ -274,6 +279,12 @@ class ContentRepositoryConfig(Config):
# synapse to issue arbitrary GET requests to your internal services, # synapse to issue arbitrary GET requests to your internal services,
# causing serious security issues. # causing serious security issues.
# #
# (0.0.0.0 and :: are always blacklisted, whether or not they are explicitly
# listed here, since they correspond to unroutable addresses.)
#
# This must be specified if url_preview_enabled is set. It is recommended that
# you uncomment the following list as a starting point.
#
#url_preview_ip_range_blacklist: #url_preview_ip_range_blacklist:
# - '127.0.0.0/8' # - '127.0.0.0/8'
# - '10.0.0.0/8' # - '10.0.0.0/8'
@ -284,7 +295,7 @@ class ContentRepositoryConfig(Config):
# - '::1/128' # - '::1/128'
# - 'fe80::/64' # - 'fe80::/64'
# - 'fc00::/7' # - 'fc00::/7'
#
# List of IP address CIDR ranges that the URL preview spider is allowed # List of IP address CIDR ranges that the URL preview spider is allowed
# to access even if they are specified in url_preview_ip_range_blacklist. # to access even if they are specified in url_preview_ip_range_blacklist.
# This is useful for specifying exceptions to wide-ranging blacklisted # This is useful for specifying exceptions to wide-ranging blacklisted

View file

@ -69,6 +69,14 @@ REQUIREMENTS = [
"attrs>=17.4.0", "attrs>=17.4.0",
"netaddr>=0.7.18", "netaddr>=0.7.18",
# requests is a transitive dep of treq, and urlib3 is a transitive dep
# of requests, as well as of sentry-sdk.
#
# As of requests 2.21, requests does not yet support urllib3 1.25.
# (If we do not pin it here, pip will give us the latest urllib3
# due to the dep via sentry-sdk.)
"urllib3<1.25",
] ]
CONDITIONAL_REQUIREMENTS = { CONDITIONAL_REQUIREMENTS = {

View file

@ -24,14 +24,19 @@ _string_with_symbols = (
string.digits + string.ascii_letters + ".,;:^&*-_+=#~@" string.digits + string.ascii_letters + ".,;:^&*-_+=#~@"
) )
# random_string and random_string_with_symbols are used for a range of things,
# some cryptographically important, some less so. We use SystemRandom to make sure
# we get cryptographically-secure randoms.
rand = random.SystemRandom()
def random_string(length): def random_string(length):
return ''.join(random.choice(string.ascii_letters) for _ in range(length)) return ''.join(rand.choice(string.ascii_letters) for _ in range(length))
def random_string_with_symbols(length): def random_string_with_symbols(length):
return ''.join( return ''.join(
random.choice(_string_with_symbols) for _ in range(length) rand.choice(_string_with_symbols) for _ in range(length)
) )