CVE-2026-82397
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-1284
- Updated
- 2026-11-02
EUVDEUVD-2026-68892
7.5
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
EUVD-2026-68892- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-8423-8fgw-73vq
6.9
tornado: multipart split() creates huge temp list before max_parts check -> memory amplification DoS (httputil.py:34)
Description
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
- Record
GHSA-8423-8fgw-73vq- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-770
- Updated
- 2026-11-02
GitHub AdvisoriesGHSA-mpf4-983q-p7j4
7.5
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Summary
Tornado parses application/x-www-form-urlencoded bodies with urllib.parse.parse_qs and does not pass max_num_fields. A body made almost entirely of separators produces tens of millions of fields, and the parse happens on the event loop before the handler runs, so a single request stalls the whole server.
Where it is
tornado/escape.py, at HEAD e530031405e2154654dedc4c84d5656b557ea310:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict"
)
max_num_fields is the parameter CPython added for exactly this, and it is absent.
The path to it is entirely server-side and pre-dispatch. RequestHandler._execute parses the body at tornado/web.py:1821, which reaches HTTPServerRequest._parse_body at tornado/httputil.py:636, and the urlencoded branch of parse_body_arguments calls parse_qs_bytes at tornado/httputil.py:1030.
The size that reaches it is bounded only by the body cap, which defaults to the stream's max_buffer_size of 104857600 at tornado/iostream.py:239, applied as the request body default at tornado/http1connection.py:136-140. A 100 MB body of separators is around fifty million fields.
Impact
Denial of service against the whole process, not one request. Tornado is single-threaded and the parse is synchronous on the event loop, so every other connection waits. No authentication is needed if any route accepts a form post, which is the normal case.
Suggested fix
Pass a bound:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict",
max_num_fields=max_num_fields,
)
with a conservative default and a way for applications to raise it. CPython raises ValueError when the limit is exceeded, which maps cleanly onto a 400.
Lowering the default body cap for urlencoded specifically would help too, since 100 MB of form fields is not a shape any real client sends.
Why I do not think this is a duplicate
The published tornado advisories cover out-of-bounds access in the C extension, unbounded accumulation of decompressed chunks in AsyncHTTPClient, the Authorization header surviving cross-origin redirects, credential leakage on curl handle reuse, and cookie attribute validation. The decompression one is the nearest in spirit and is on the client side; this is the server parsing a request body. The call is unchanged at HEAD.
- Record
GHSA-mpf4-983q-p7j4- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-1284
- Updated
- 2026-11-02
NVD
7.5
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-400, CWE-1284
- Updated
- 2026-11-02
OSVBELL-CVE-2026-82397
7.5
- Record
BELL-CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
Show 30 moreShow less
OSV
7.5
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1284, CWE-400
- Updated
- 2026-11-02
OSVDEBIAN-CVE-2026-82397
7.5
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
DEBIAN-CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVGHSA-8423-8fgw-73vq
6.9
tornado: multipart split() creates huge temp list before max_parts check -> memory amplification DoS (httputil.py:34)
Description
Summary
parse_multipart_form_data (httputil.py:34) calls
data.split(b"--"+boundary+b"\r\n") before the max_parts check (:35).
A 600KB body with 100k parts creates a 100k-element transient list first,
then rejects transient memory amplification (each split element is a copy).
Pre-auth HTTP DoS.
Root cause
parts = data[:final_boundary_index].split(b"--" + boundary + b"\r\n") # :34 huge list first
if len(parts) > config.max_parts: # :35 check after
raise HTTPInputError("multipart/form-data has too many parts")
PoC
gist: https://gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
poc.py + output.txt (100k parts from 600KB transient list).
Fix
Count separators without materializing the list (e.g. data.count(b"--"+boundary) first).
Credit
Reported by afldl, 2026-07.
- Record
GHSA-8423-8fgw-73vq- CVSS 4.0
- 6.9 Medium
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:N - Weakness
- CWE-770
- Updated
- 2026-11-02
OSVGHSA-mpf4-983q-p7j4
7.5
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Summary
Tornado parses application/x-www-form-urlencoded bodies with urllib.parse.parse_qs and does not pass max_num_fields. A body made almost entirely of separators produces tens of millions of fields, and the parse happens on the event loop before the handler runs, so a single request stalls the whole server.
Where it is
tornado/escape.py, at HEAD e530031405e2154654dedc4c84d5656b557ea310:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict"
)
max_num_fields is the parameter CPython added for exactly this, and it is absent.
The path to it is entirely server-side and pre-dispatch. RequestHandler._execute parses the body at tornado/web.py:1821, which reaches HTTPServerRequest._parse_body at tornado/httputil.py:636, and the urlencoded branch of parse_body_arguments calls parse_qs_bytes at tornado/httputil.py:1030.
The size that reaches it is bounded only by the body cap, which defaults to the stream's max_buffer_size of 104857600 at tornado/iostream.py:239, applied as the request body default at tornado/http1connection.py:136-140. A 100 MB body of separators is around fifty million fields.
Impact
Denial of service against the whole process, not one request. Tornado is single-threaded and the parse is synchronous on the event loop, so every other connection waits. No authentication is needed if any route accepts a form post, which is the normal case.
Suggested fix
Pass a bound:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict",
max_num_fields=max_num_fields,
)
with a conservative default and a way for applications to raise it. CPython raises ValueError when the limit is exceeded, which maps cleanly onto a 400.
Lowering the default body cap for urlencoded specifically would help too, since 100 MB of form fields is not a shape any real client sends.
Why I do not think this is a duplicate
The published tornado advisories cover out-of-bounds access in the C extension, unbounded accumulation of decompressed chunks in AsyncHTTPClient, the Authorization header surviving cross-origin redirects, credential leakage on curl handle reuse, and cookie attribute validation. The decompression one is the nearest in spirit and is on the client side; this is the server parsing a request body. The call is unchanged at HEAD.
- Record
GHSA-mpf4-983q-p7j4- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1284, CWE-400
- Updated
- 2026-11-02
OSVOESA-2026-3971
7.5
python-tornado security update
Tornado is an open source version of the scalable, non-blocking web server and tools.
Security Fix(es):
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.(CVE-2026-82397)
- Record
OESA-2026-3971- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVOESA-2026-3972
7.5
python-tornado security update
Tornado is an open source version of the scalable, non-blocking web server and tools.
Security Fix(es):
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.(CVE-2026-82397)
- Record
OESA-2026-3972- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVOESA-2026-3973
7.5
python-tornado security update
Tornado is an open source version of the scalable, non-blocking web server and tools.
Security Fix(es):
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.(CVE-2026-82397)
- Record
OESA-2026-3973- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVOESA-2026-4037
7.7
python-tornado security update
Tornado is a Python web framework and asynchronous networking library, originally developed at FriendFeed. By using non-blocking network I/O, Tornado can scale to tens of thousands of open connections, making it ideal for long polling, WebSockets, and other applications that require a long-lived connection to each user.
Security Fix(es):
Tornado before 6.3.3 contains an HTTP request smuggling vulnerability due to improper parsing of Content-Length headers accepting non-standard characters. Attackers can send crafted HTTP requests with these characters to bypass proxy validation and smuggle requests when deployed behind certain proxies.(CVE-2023-54397)
Tornado before 6.4.1 ignores duplicate Transfer-Encoding: chunked headers, treating requests as having no message body and parsing the chunked body as a subsequent request. Attackers can exploit this inconsistency when Tornado is deployed behind proxies to perform HTTP request smuggling, enabling access control bypass, cache poisoning, or connection desynchronization.(CVE-2024-14029)
Tornado before 6.4.1 contains a CRLF injection vulnerability in CurlAsyncHTTPClient that fails to reject carriage return and line feed characters in request headers. Attackers can inject CRLF sequences into header values to inject arbitrary headers or construct entirely new HTTP requests.(CVE-2024-58384)
When SimpleAsyncHTTPClient follows a 3xx redirect, it shallow-copies the original HTTPRequest, rewrites the URL, decrements max_redirects, and removes only the Host header. It does not clear Authorization, auth_username, auth_password, or auth_mode when the redirect target changes origin. As a result, credentials intended for one origin can be forwarded to a different origin when follow_redirects=True, which is the default. Beginning in Tornado 6.5.6, SimpleAsyncHTTPClient matches the default behavior of libcurl (and therefore CurlAsyncHTTPClient): When a redirect changes the scheme, host, or port of the url, the Authorization and Cookie headers will be removed when following the redirect.(CVE-2026-49853)
SummaryTornado's optional native extension tornado.speedups implements websocket_mask without validating that the mask argument is exactly four bytes long. The C function reads four bytes from mask unconditionally, even when Python passes a shorter byte string. This can read beyond the provided buffer, exposing up to 3 bytes of uninitialized memory.The behavior is reachable from Tornado's XSRF token decoder when xsrf_cookies=True and the native extension is active. ### MitigationsThis bug is fixed in Tornado 6.5.6. Prior to upgrading to this version, setting the environment variable TORNADO_EXTENSION=0 will disable the vulnerable code (at the expense of reducing websocket performance).(CVE-2026-49854)
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.(CVE-2026-49855)
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and…
- Record
OESA-2026-4037- CVSS 3.1
- 7.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N - Updated
- 2026-11-02
OSVPYSEC-2026-3928
7.5
Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop
Summary
Tornado parses application/x-www-form-urlencoded bodies with urllib.parse.parse_qs and does not pass max_num_fields. A body made almost entirely of separators produces tens of millions of fields, and the parse happens on the event loop before the handler runs, so a single request stalls the whole server.
Where it is
tornado/escape.py, at HEAD e530031405e2154654dedc4c84d5656b557ea310:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict"
)
max_num_fields is the parameter CPython added for exactly this, and it is absent.
The path to it is entirely server-side and pre-dispatch. RequestHandler._execute parses the body at tornado/web.py:1821, which reaches HTTPServerRequest._parse_body at tornado/httputil.py:636, and the urlencoded branch of parse_body_arguments calls parse_qs_bytes at tornado/httputil.py:1030.
The size that reaches it is bounded only by the body cap, which defaults to the stream's max_buffer_size of 104857600 at tornado/iostream.py:239, applied as the request body default at tornado/http1connection.py:136-140. A 100 MB body of separators is around fifty million fields.
Impact
Denial of service against the whole process, not one request. Tornado is single-threaded and the parse is synchronous on the event loop, so every other connection waits. No authentication is needed if any route accepts a form post, which is the normal case.
Suggested fix
Pass a bound:
result = urllib.parse.parse_qs(
qs, keep_blank_values, strict_parsing, encoding="latin1", errors="strict",
max_num_fields=max_num_fields,
)
with a conservative default and a way for applications to raise it. CPython raises ValueError when the limit is exceeded, which maps cleanly onto a 400.
Lowering the default body cap for urlencoded specifically would help too, since 100 MB of form fields is not a shape any real client sends.
Why I do not think this is a duplicate
The published tornado advisories cover out-of-bounds access in the C extension, unbounded accumulation of decompressed chunks in AsyncHTTPClient, the Authorization header surviving cross-origin redirects, credential leakage on curl handle reuse, and cookie attribute validation. The decompression one is the nearest in spirit and is on the client side; this is the server parsing a request body. The call is unchanged at HEAD.
- Record
PYSEC-2026-3928- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:67146
7.7
Red Hat Security Advisory: python-tornado security update
- Record
RHSA-2026:67146- CVSS 3.1
- 7.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N - Updated
- 2026-11-02
OSVRHSA-2026:67147
7.7
Red Hat Security Advisory: python-tornado security update
- Record
RHSA-2026:67147- CVSS 3.1
- 7.7 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N - Updated
- 2026-11-02
OSVRHSA-2026:84798
7.5
Red Hat Security Advisory: pcs security update
- Record
RHSA-2026:84798- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:84843
7.5
Red Hat Security Advisory: pcs security update
- Record
RHSA-2026:84843- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:84844
7.5
Red Hat Security Advisory: pcs security update
- Record
RHSA-2026:84844- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRHSA-2026:85135
7.5
Red Hat Security Advisory: pcs security update
- Record
RHSA-2026:85135- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
OSVRLSA-2026:84798
7.5
Important: pcs security update
The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.
Security Fix(es):
-
python-tornado: Tornado: Denial of Service via excessive URL-encoded body fields (CVE-2026-82397)
-
python-tornado: Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding (CVE-2024-14029)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
RLSA-2026:84798- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N - Updated
- 2026-11-02
OSVUBUNTU-CVE-2026-82397
7.5
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
UBUNTU-CVE-2026-82397- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-06
OSVALSA-2026:67146 No score
Important: python-tornado security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- tornado: Tornado: Information disclosure via improper handling of credentials during HTTP redirects (CVE-2026-49853)
- tornado: Tornado: Denial of Service via uncontrolled gzip decompression memory consumption (CVE-2026-49855)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:67146- Updated
- 2026-11-02
OSVALSA-2026:67147 No score
Important: python-tornado security update
Python is an interpreted, interactive, object-oriented programming language, which includes modules, classes, exceptions, very high level dynamic data types and dynamic typing. Python supports interfaces to many system calls and libraries, as well as to various windowing systems.
Security Fix(es):
- tornado: Tornado: Information disclosure via improper handling of credentials during HTTP redirects (CVE-2026-49853)
- tornado: Tornado: Denial of Service via uncontrolled gzip decompression memory consumption (CVE-2026-49855)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:67147- Updated
- 2026-11-02
OSVALSA-2026:84798 No score
Important: pcs security update
The pcs packages provide a command-line configuration system for the Pacemaker and Corosync utilities.
Security Fix(es):
- python-tornado: Tornado: Denial of Service via excessive URL-encoded body fields (CVE-2026-82397)
- python-tornado: Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding (CVE-2024-14029)
For more details about the security issue(s), including the impact, a CVSS score, acknowledgments, and other related information, refer to the CVE page(s) listed in the References section.
- Record
ALSA-2026:84798- Updated
- 2026-11-02
OSVAZL-98544 No score
CVE-2026-82397 affecting package python-tornado 6.3.3-11
Tornado is a Python web framework and asynchronous networking library. Prior to 6.5.8, Tornado parses application/x-www-form-urlencoded request bodies with urllib.parse.parse_qs in tornado/escape.py without passing max_num_fields. RequestHandler._execute in tornado/web.py parses the body before handler dispatch through HTTPServerRequest._parse_body and parse_body_arguments in tornado/httputil.py, so an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection. The body is bounded only by max_buffer_size, which defaults to 104857600 bytes. This issue is fixed in version 6.5.8.
- Record
AZL-98544- Updated
- 2026-11-05
OSVCLSA-2026-1789369095 No score
TuxCare security update for tornado (2 CVEs)
TuxCare rebuilt tornado to address 2 CVEs. Fixed in 6.1.0.post8+tuxcare.
- Record
CLSA-2026-1789369095- Updated
- 2026-11-02
OSVCLSA-2026-1790675116 No score
TuxCare security update for tornado (15 CVEs)
TuxCare rebuilt tornado to address 15 CVEs. Fixed in 5.1.1.post4+tuxcare.
- Record
CLSA-2026-1790675116- Updated
- 2026-11-02
OSVopenSUSE-SU-2026:22059-1 No score
Security update for python-tornado6
This update for python-tornado6 fixes the following issues:
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- CVE-2026-91990: splitting of multipart data before validation of the
max_partslimit allows for resource exhaustion and a denial of service (bsc#1281439). - CVE-2026-91991: incomplete fix for cookie attribute injection allows for cookie validation bypass via semicolon- delimited data in capitalized parameters (bsc#1281440).
- Record
openSUSE-SU-2026:22059-1- Updated
- 2026-11-02
OSVROOT-APP-PYPI-CVE-2026-82397 No score
CVE-2026-82397 in tornado - Patched by Root
Root has patched CVE-2026-82397 in the tornado package for Root:PyPI. Multiple fixed versions available.
- Record
ROOT-APP-PYPI-CVE-2026-82397- Updated
- 2026-11-02
OSVSUSE-SU-2026:23523-1 No score
Security update for python-tornado6
This update for python-tornado6 fixes the following issue:
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- Record
SUSE-SU-2026:23523-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24121-1 No score
Security update for python-tornado6
This update for python-tornado6 fixes the following issues:
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- CVE-2026-91990: splitting of multipart data before validation of the
max_partslimit allows for resource exhaustion and a denial of service (bsc#1281439). - CVE-2026-91991: incomplete fix for cookie attribute injection allows for cookie validation bypass via semicolon- delimited data in capitalized parameters (bsc#1281440).
- Record
SUSE-SU-2026:24121-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:24207-1 No score
Security update for python-tornado6
This update for python-tornado6 fixes the following issues:
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- CVE-2026-91990: splitting of multipart data before validation of the
max_partslimit allows for resource exhaustion and a denial of service (bsc#1281439). - CVE-2026-91991: incomplete fix for cookie attribute injection allows for cookie validation bypass via semicolon- delimited data in capitalized parameters (bsc#1281440).
- Record
SUSE-SU-2026:24207-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:4073-1 No score
Security update for python-tornado
This update for python-tornado fixes the following issue:
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- Record
SUSE-SU-2026:4073-1- Updated
- 2026-11-02
OSVSUSE-SU-2026:4076-1 No score
Security update for python-tornado6
This update for python-tornado6 fixes the following issue
- CVE-2026-82397: an unauthenticated request body containing millions of separator-delimited fields can synchronously stall the single-threaded event loop and delay every connection (bsc#1277725).
- Record
SUSE-SU-2026:4076-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
tornadoPyPI |
through 6.5.7 | 6.5.8 |
python3-tornadoAlmaLinux:9 From an advisory covering 4 CVEs |
before 6.5.8-0.el9_8.1 | 6.5.8-0.el9_8.1 |
python3-tornadoAlmaLinux:10 From an advisory covering 4 CVEs |
before 6.5.8-0.el10_2.1 | 6.5.8-0.el10_2.1 |
pcsAlmaLinux:8 From an advisory covering 2 CVEs |
before 0.10.18-2.el8_10.10.alma.1 | 0.10.18-2.el8_10.10.alma.1 |
pcs-snmpAlmaLinux:8 From an advisory covering 2 CVEs |
before 0.10.18-2.el8_10.10.alma.1 | 0.10.18-2.el8_10.10.alma.1 |
python-tornadoAzure Linux:3 |
through 6.3.3-11 | None known |
py3-tornadoAlpaquita:25 |
6.5.1-r0 up to 6.5.5-r1 | 6.5.5-r1 |
py3-tornadoAlpaquita:stream |
6.3.3-r0 up to 6.5.6-r1 | 6.5.6-r1 |
tornadoTuxCare:PyPI |
6.1 up to 6.1.0.post8+tuxcare, plus listed versions 6.1.0.post1+tuxcare6.1.0.post2+tuxcare6.1.0.post3+tuxcare6.1.0.post4+tuxcare6.1.0.post5+tuxcare6.1.0.post6+tuxcare6.1.0.post7+tuxcare |
6.1.0.post8+tuxcare |
tornadoTuxCare:PyPI From an advisory covering 9 CVEs |
5.1.1 up to 5.1.1.post4+tuxcare, plus listed versions 5.1.1.post1+tuxcare5.1.1.post2+tuxcare5.1.1.post3+tuxcare |
5.1.1.post4+tuxcare |
Show 69 moreShow less
| Package | Affected | Fixed |
|---|---|---|
python-tornadoDebian:12 |
All versions, plus listed versions 6.2.0-36.2.0-3+deb12u16.2.0-3+deb12u26.2.0-3+deb12u36.2.0-3+deb12u4 Show 19 moreShow less6.3.2-16.4.0-16.4.0-26.4.1-16.4.1-26.4.1-36.4.2-16.4.2-26.4.2-36.5.2-16.5.2-26.5.2-36.5.4-0.16.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-5 |
None known |
python-tornadoDebian:13 |
All versions, plus listed versions 6.4.2-36.4.2-3+deb13u16.4.2-3+deb13u26.5.2-16.5.2-2 Show 8 moreShow less6.5.2-36.5.4-0.16.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-5 |
None known |
python-tornadoDebian:14 |
All versions, plus listed versions 6.4.2-36.5.2-16.5.2-26.5.2-36.5.4-0.1 Show 6 moreShow less6.5.4-16.5.5-16.5.5-26.5.5-36.5.5-46.5.5-5 |
None known |
tornadoPyPI |
before 6.5.8, plus listed versions 0.21.01.11.1.11.2 Show 45 moreShow less1.2.12.02.12.1.12.22.2.12.32.42.4.13.03.0.13.0.23.13.1.13.23.2.13.2.24.04.0.14.0.24.14.1b24.24.2.14.2b14.34.3b14.3b24.44.4.14.4.24.4.34.4b14.54.5.14.5.24.5.34.5b14.5b25.05.0.15.0.25.0a15.0b15.1 |
6.5.8 |
python-tornadoopenEuler:24.03-LTS-SP3 |
before 6.5-6.oe2403sp3 | 6.5-6.oe2403sp3 |
python-tornadoopenEuler:24.03-LTS-SP4 |
before 6.5-6.oe2403sp4 | 6.5-6.oe2403sp4 |
python-tornadoopenEuler:24.03-LTS-SP1 |
before 6.5-6.oe2403sp1 | 6.5-6.oe2403sp1 |
python-tornadoopenEuler:22.03-LTS-SP4 From an advisory covering 10 CVEs |
before 6.5.10-1.oe2203sp4 | 6.5.10-1.oe2203sp4 |
python-tornadoRed Hat:enterprise_linux:9::appstream From an advisory covering 4 CVEs |
before 0:6.5.8-0.el9_8.1 | 0:6.5.8-0.el9_8.1 |
python-tornado-debugsourceRed Hat:enterprise_linux:9::appstream From an advisory covering 4 CVEs |
before 0:6.5.8-0.el9_8.1 | 0:6.5.8-0.el9_8.1 |
python3-tornadoRed Hat:enterprise_linux:9::appstream From an advisory covering 4 CVEs |
before 0:6.5.8-0.el9_8.1 | 0:6.5.8-0.el9_8.1 |
python3-tornado-debuginfoRed Hat:enterprise_linux:9::appstream From an advisory covering 4 CVEs |
before 0:6.5.8-0.el9_8.1 | 0:6.5.8-0.el9_8.1 |
python-tornadoRed Hat:enterprise_linux:10.2 From an advisory covering 4 CVEs |
before 0:6.5.8-0.el10_2.1 | 0:6.5.8-0.el10_2.1 |
python-tornado-debugsourceRed Hat:enterprise_linux:10.2 From an advisory covering 4 CVEs |
before 0:6.5.8-0.el10_2.1 | 0:6.5.8-0.el10_2.1 |
python3-tornadoRed Hat:enterprise_linux:10.2 From an advisory covering 4 CVEs |
before 0:6.5.8-0.el10_2.1 | 0:6.5.8-0.el10_2.1 |
python3-tornado-debuginfoRed Hat:enterprise_linux:10.2 From an advisory covering 4 CVEs |
before 0:6.5.8-0.el10_2.1 | 0:6.5.8-0.el10_2.1 |
pcsRed Hat:enterprise_linux:8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.18-2.el8_10.10 | 0:0.10.18-2.el8_10.10 |
pcs-snmpRed Hat:enterprise_linux:8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.18-2.el8_10.10 | 0:0.10.18-2.el8_10.10 |
pcsRed Hat:enterprise_linux:8::resilientstorage From an advisory covering 2 CVEs |
before 0:0.10.18-2.el8_10.10 | 0:0.10.18-2.el8_10.10 |
pcs-snmpRed Hat:enterprise_linux:8::resilientstorage From an advisory covering 2 CVEs |
before 0:0.10.18-2.el8_10.10 | 0:0.10.18-2.el8_10.10 |
pcsRed Hat:rhel_aus:8.4::highavailability From an advisory covering 2 CVEs |
before 0:0.10.8-1.el8_4.12 | 0:0.10.8-1.el8_4.12 |
pcs-snmpRed Hat:rhel_aus:8.4::highavailability From an advisory covering 2 CVEs |
before 0:0.10.8-1.el8_4.12 | 0:0.10.8-1.el8_4.12 |
pcsRed Hat:rhel_eus_long_life:8.4::highavailability From an advisory covering 2 CVEs |
before 0:0.10.8-1.el8_4.12 | 0:0.10.8-1.el8_4.12 |
pcs-snmpRed Hat:rhel_eus_long_life:8.4::highavailability From an advisory covering 2 CVEs |
before 0:0.10.8-1.el8_4.12 | 0:0.10.8-1.el8_4.12 |
pcsRed Hat:rhel_e4s:8.8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.15-4.el8_8.12 | 0:0.10.15-4.el8_8.12 |
pcs-snmpRed Hat:rhel_e4s:8.8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.15-4.el8_8.12 | 0:0.10.15-4.el8_8.12 |
pcsRed Hat:rhel_tus:8.8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.15-4.el8_8.12 | 0:0.10.15-4.el8_8.12 |
pcs-snmpRed Hat:rhel_tus:8.8::highavailability From an advisory covering 2 CVEs |
before 0:0.10.15-4.el8_8.12 | 0:0.10.15-4.el8_8.12 |
pcsRed Hat:rhel_eus_long_life:8.6::highavailability From an advisory covering 2 CVEs |
before 0:0.10.12-6.el8_6.14 | 0:0.10.12-6.el8_6.14 |
pcs-snmpRed Hat:rhel_eus_long_life:8.6::highavailability From an advisory covering 2 CVEs |
before 0:0.10.12-6.el8_6.14 | 0:0.10.12-6.el8_6.14 |
pcsRocky Linux:8 From an advisory covering 2 CVEs |
before 0:0.10.18-2.el8_10.10 | 0:0.10.18-2.el8_10.10 |
tornadoRoot:PyPI |
before 6.2+aikido.10 | 6.2+aikido.106.5.3+aikido.36.5.3+aikido.46.5.3+aikido.76.5.3+aikido.56.2+aikido.116.2+aikido.126.5.3+aikido.6 |
python-tornado6SUSE:Linux Micro 6.1 |
before 6.4-slfo.1.1_7.1 | 6.4-slfo.1.1_7.1 |
python-tornado6SUSE:Linux Micro 6.2 From an advisory covering 3 CVEs |
before 6.5-160000.7.1 | 6.5-160000.7.1 |
python-tornado6SUSE:Linux Enterprise Server 16.0 From an advisory covering 3 CVEs |
before 6.5-160000.7.1 | 6.5-160000.7.1 |
python-tornado6SUSE:Linux Enterprise Server for SAP applications 16.0 From an advisory covering 3 CVEs |
before 6.5-160000.7.1 | 6.5-160000.7.1 |
python-tornadoSUSE:Linux Enterprise Micro 5.3 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Micro 5.4 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Micro 5.5 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Module for Basesystem 15 SP7 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server 15 SP4-LTSS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server 15 SP5-LTSS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server 15 SP6-LTSS |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server for SAP Applications 15 SP4 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server for SAP Applications 15 SP5 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornadoSUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 4.5.3-150000.3.28.1 | 4.5.3-150000.3.28.1 |
python-tornado6SUSE:Linux Enterprise Module for Python 3 15 SP7 |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise High Performance Computing 15 SP4-ESPOS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise High Performance Computing 15 SP4-LTSS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise High Performance Computing 15 SP5-ESPOS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise High Performance Computing 15 SP5-LTSS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server 15 SP4-LTSS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server 15 SP5-LTSS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server 15 SP6-LTSS |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server for SAP Applications 15 SP4 |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server for SAP Applications 15 SP5 |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornado6SUSE:Linux Enterprise Server for SAP Applications 15 SP6 |
before 6.3.2-150400.9.24.1 | 6.3.2-150400.9.24.1 |
python-tornadoUbuntu:Pro:16.04:LTS |
All versions, plus listed versions 4.2.1-1ubuntu24.2.1-1ubuntu34.2.1-1ubuntu3.14.2.1-1ubuntu3.1+esm14.2.1-1ubuntu3.1+esm24.2.1-1ubuntu3.1+esm34.2.1-1ubuntu3.1+esm44.2.1-1ubuntu3.1+esm5 |
None known |
python-tornadoUbuntu:Pro:18.04:LTS |
All versions, plus listed versions 4.5.1-2.1~build24.5.2-14.5.3-14.5.3-1ubuntu0.14.5.3-1ubuntu0.2 Show 5 moreShow less4.5.3-1ubuntu0.2+esm14.5.3-1ubuntu0.2+esm24.5.3-1ubuntu0.2+esm34.5.3-1ubuntu0.2+esm44.5.3-1ubuntu0.2+esm5 |
None known |
python-tornadoUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 5.1.1-4ubuntu15.1.1-4ubuntu56.0.3+really5.1.1-26.0.3+really5.1.1-2build16.0.3+really5.1.1-2build2 Show 6 moreShow less6.0.3+really5.1.1-36.0.3+really5.1.1-3ubuntu0.1~esm16.0.3+really5.1.1-3ubuntu0.1~esm36.0.3+really5.1.1-3ubuntu0.1~esm56.0.3+really5.1.1-3ubuntu0.1~esm76.0.3+really5.1.1-3ubuntu0.1~esm8 |
None known |
python-tornadoUbuntu:Pro:22.04:LTS |
All versions, plus listed versions 6.1.0-1build16.1.0-26.1.0-36.1.0-3build16.1.0-3ubuntu0.1~esm1 Show 5 moreShow less6.1.0-3ubuntu0.1~esm26.1.0-3ubuntu0.1~esm46.1.0-3ubuntu0.1~esm56.1.0-3ubuntu0.1~esm66.1.0-3ubuntu0.1~esm7 |
None known |
python-tornadoUbuntu:24.04:LTS |
All versions, plus listed versions 6.3.2-16.4.0-0ubuntu16.4.0-16.4.0-1build16.4.0-1ubuntu0.1 Show 5 moreShow less6.4.0-1ubuntu0.26.4.0-1ubuntu0.46.4.0-1ubuntu0.56.4.0-1ubuntu0.66.4.0-1ubuntu0.7 |
None known |
python-tornadoUbuntu:26.10 |
All versions, plus listed versions 6.5.4-0.16.5.5-26.5.5-46.5.5-56.5.5-5ubuntu1.16.5.5-5ubuntu1.2 |
None known |
python-tornadoUbuntu:26.04:LTS |
All versions, plus listed versions 6.4.2-36.5.2-36.5.4-0.16.5.4-0.1ubuntu0.16.5.4-0.1ubuntu0.26.5.4-0.1ubuntu0.3 |
None known |
python-tornado6openSUSE:Leap 16.0 From an advisory covering 3 CVEs |
before 6.5-160000.7.1 | 6.5-160000.7.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | OSV | |
| affected | ||
| facts | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-82397 is a high vulnerability (CVSS 7.5) in Tornadoweb Tornado, published August 31, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.35%, the 28th percentile. Fixed in tornado 6.5.8.
References
github.com/tornadoweb/tornado/security/advisories/GHSA-mpf4-983q-p7j4
github.com/tornadoweb/tornado/pull/3704
github.com/tornadoweb/tornado/commit/8d6363ed7b69d5f0da806efe34d256627a2191de
github.com/tornadoweb/tornado/releases/tag/v6.5.8
github.com/tornadoweb/tornado/security/advisories/GHSA-8423-8fgw-73vq
github.com/tornadoweb/tornado/commit/de85b3f87446e323e881bbaa3d5a74f4b76e5f05
Show 80 moreShow less
gist.github.com/afldl/649861f25d39b53b7edbe0298e171617
github.com/advisories/GHSA-8423-8fgw-73vq
nvd.nist.gov/vuln/detail/CVE-2026-82397
github.com/advisories/GHSA-mpf4-983q-p7j4
access.redhat.com/errata/RHSA-2026:67146
access.redhat.com/security/cve/CVE-2026-49853
access.redhat.com/security/cve/CVE-2026-49855
errata.almalinux.org/9/ALSA-2026-67146.html
redhat.com/security/data/cve/CVE-2026-82397.html
redhat.com/security/data/cve/CVE-2026-91990.html
access.redhat.com/errata/RHSA-2026:67147
errata.almalinux.org/10/ALSA-2026-67147.html
access.redhat.com/errata/RHSA-2026:84798
access.redhat.com/security/cve/CVE-2024-14029
access.redhat.com/security/cve/CVE-2026-82397
bugzilla.redhat.com/2526562
bugzilla.redhat.com/2533918
errata.almalinux.org/8/ALSA-2026-84798.html
docs.bell-sw.com/security/cves/CVE-2026-82397
github.com/CVEProject/cvelistV5/tree/main/cves/2026/82xxx/CVE-2026-82397.json
security-tracker.debian.org/tracker/CVE-2026-82397
github.com/tornadoweb/tornado
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3971
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3972
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-3973
openeuler.org/zh/security/security-bulletins/detail?id=openEuler-SA-2026-4037
nvd.nist.gov/vuln/detail/CVE-2023-54397
nvd.nist.gov/vuln/detail/CVE-2024-14029
nvd.nist.gov/vuln/detail/CVE-2024-58384
nvd.nist.gov/vuln/detail/CVE-2026-49853
nvd.nist.gov/vuln/detail/CVE-2026-49854
nvd.nist.gov/vuln/detail/CVE-2026-49855
nvd.nist.gov/vuln/detail/CVE-2026-91990
nvd.nist.gov/vuln/detail/CVE-2026-91991
nvd.nist.gov/vuln/detail/CVE-2026-91992
pypi.org/project/tornado
access.redhat.com/security/updates/classification
bugzilla.redhat.com/show_bug.cgi?id=2500672
bugzilla.redhat.com/show_bug.cgi?id=2500686
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_67146.json
cve.org/CVERecord?id=CVE-2026-49853
github.com/tornadoweb/tornado/commit/aba2569f7ed7a6bdbef816658fb6b7182531b751
github.com/tornadoweb/tornado/pull/3626
github.com/tornadoweb/tornado/releases/tag/v6.5.6
github.com/tornadoweb/tornado/security/advisories/GHSA-3x9g-8vmp-wqvf
cve.org/CVERecord?id=CVE-2026-49855
github.com/tornadoweb/tornado/commit/ff808b33adc52d89a549376a5e3628e92abbc8ff
github.com/tornadoweb/tornado/security/advisories/GHSA-mgf9-4vpg-hj56
bugzilla.redhat.com/show_bug.cgi?id=2526562
cve.org/CVERecord?id=CVE-2026-82397
access.redhat.com/security/cve/CVE-2026-91990
bugzilla.redhat.com/show_bug.cgi?id=2533953
cve.org/CVERecord?id=CVE-2026-91990
vulncheck.com/advisories/tornado-before-6.5.8-memory-amplification-dos-via-multipart
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_67147.json
bugzilla.redhat.com/show_bug.cgi?id=2533918
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_84798.json
cve.org/CVERecord?id=CVE-2024-14029
github.com/tornadoweb/tornado/security/advisories/GHSA-753j-mpmx-qq6g
vulncheck.com/advisories/tornado-before-6.4.1-http-request-smuggling-via-transfer-encoding
access.redhat.com/errata/RHSA-2026:84843
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_84843.json
access.redhat.com/errata/RHSA-2026:84844
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_84844.json
access.redhat.com/errata/RHSA-2026:85135
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_85135.json
errata.rockylinux.org/RLSA-2026:84798
suse.com/support/update/announcement/2026/suse-su-202623523-1
bugzilla.suse.com/1277725
suse.com/security/cve/CVE-2026-82397
suse.com/support/update/announcement/2026/suse-su-202624121-1
bugzilla.suse.com/1261922
bugzilla.suse.com/1281439
bugzilla.suse.com/1281440
suse.com/security/cve/CVE-2026-91990
suse.com/security/cve/CVE-2026-91991
suse.com/support/update/announcement/2026/suse-su-202624207-1
suse.com/support/update/announcement/2026/suse-su-20264073-1
suse.com/support/update/announcement/2026/suse-su-20264076-1
ubuntu.com/security/CVE-2026-82397
Left out here: 33 versions and the rest of 1 source description. The JSON record has them.