VDB
Sign up
HIGH7.5

PYSEC-2026-3389

tornado AsyncHTTPClient accumulates decompressed chunks without size limit (gzip bomb)

Quick fix

PYSEC-2026-3389 — tornado: upgrade to the fixed version with the command below.

pip install --upgrade 'tornado>=6.5.6'

Details

Tornado's gzip decompression routines work in limited-size chunks, but have no overall limit for the total size of decompressed chunks that they will accumulate (There has always been a limit for the total *compressed* size). This allows a malicious server to consume effectively unlimited amounts of memory if it is accessed via SimpleAsyncHTTPClient in its default configuration. `HTTPServer` is not affected in its default configuration, but it is if `decompress_request=True` is set.

This bug is fixed in Tornado 6.5.6. `max_body_size` is now checked both for the compressed and cumulative decompressed size of the response.

Prior to upgrading, this issue can be mitigated by setting `decompress_response=False` or using `CurlAsyncHTTPClient`.

Are you affected?

Enter the version of the package you're using.

Affected packages

PyPI/tornado
Introduced in: 0Fixed in: 6.5.6
Fixpip install --upgrade 'tornado>=6.5.6'

References