autobahn-python: Autobahn Python: permessage-brotli inflates a whole frame before maxMessagePayloadSize is checked (incomplete fix of GHSA-hxp9-w8x3-p566)
What fixes it
No source in this snapshot names a fixed version. The vendor advisories under References are the place to check.
Description
Autobahn Python is a WebSocket and WAMP implementation for Python that supports Twisted and asyncio. From 26.7.1 until 26.10.1, PerMessageBrotli.decompress_message_data in compress_brotli.py calls the Brotli decompressor without an output limit and checks maxMessagePayloadSize only after a complete frame has been inflated. An unauthenticated WebSocket client can send a small, highly compressed frame that allocates hundreds of MiB before rejection, causing memory-exhaustion denial of service on servers that enable the opt-in permessage-brotli feature through the compress extra. Deflate and bzip2 already enforce the remaining output budget and are outside this residual vulnerability. This issue is fixed in version 26.10.1.
Text from CVE List
Affected versions 1
- autobahn-pythonaffected: >= 26.7.1, < 26.10.1CVE List
References 4
- github.com/crossbario/autobahn-python/commit/a41442bbee4f6126a8ce1bb892840124c24d16f1Fixvia CVE List
- github.com/crossbario/autobahn-python/releases/tag/v26_10_1Fixvia CVE List
- github.com/crossbario/autobahn-python/security/advisories/GHSA-pjh6-c8mg-3x7mAdvisoryvia CVE List
- github.com/crossbario/autobahn-python/pull/1987Referencevia CVE List