<?xml version='1.0' encoding='UTF-8'?>
<?xml-stylesheet href="/static/style.xsl" type="text/xsl"?>
<rss xmlns:atom="http://www.w3.org/2005/Atom" xmlns:content="http://purl.org/rss/1.0/modules/content/" version="2.0">
  <channel>
    <title>Most recent entries from all</title>
    <link>https://vulnerability.circl.lu</link>
    <description>Contains only the most 10 recent entries.</description>
    <docs>http://www.rssboard.org/rss-specification</docs>
    <generator>python-feedgen</generator>
    <language>en</language>
    <lastBuildDate>Thu, 01 Oct 2026 15:29:51 +0000</lastBuildDate>
    <item>
      <title>BELL-CVE-2026-82397</title>
      <link>https://vulnerability.circl.lu/vuln/bell-cve-2026-82397</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Alpaquita:25: py3-tornado, Alpaquita:stream: py3-tornado&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Alpaquita:25: py3-tornado, Alpaquita:stream: py3-tornado&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/bell-cve-2026-82397</guid>
    </item>
    <item>
      <title>BREW-jupyterlab-CVE-2026-82397 — Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop</title>
      <link>https://vulnerability.circl.lu/vuln/brew-jupyterlab-cve-2026-82397</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: jupyterlab&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Homebrew: jupyterlab&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/brew-jupyterlab-cve-2026-82397</guid>
    </item>
    <item>
      <title>certfr-2026-avi-1233 — De multiples vulnérabilités ont été découvertes dans les produits IBM. Certaines d'entre elles permettent à un attaquan…</title>
      <link>https://vulnerability.circl.lu/vuln/certfr-2026-avi-1233</link>
      <description>certfr-2026-avi-1233</description>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/certfr-2026-avi-1233</guid>
    </item>
    <item>
      <title>CLEANSTART-2026-CX71098 — Tornado is a Python web framework and asynchronous networking library</title>
      <link>https://vulnerability.circl.lu/vuln/cleanstart-2026-cx71098</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; CleanStart: airflow-3&lt;/p&gt;
&lt;p&gt;CVE-2026-82397 affects multiple packages. Tornado is a Python web framework and asynchronous networking library. See references for individual vulnerability details.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; CleanStart: airflow-3&lt;/p&gt;
&lt;p&gt;CVE-2026-82397 affects multiple packages. Tornado is a Python web framework and asynchronous networking library. See references for individual vulnerability details.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cleanstart-2026-cx71098</guid>
    </item>
    <item>
      <title>fkie_cve-2026-82397</title>
      <link>https://vulnerability.circl.lu/vuln/fkie_cve-2026-82397</link>
      <description>&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/fkie_cve-2026-82397</guid>
    </item>
    <item>
      <title>GHSA-mpf4-983q-p7j4 — Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-mpf4-983q-p7j4</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: tornado&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: tornado&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-mpf4-983q-p7j4</guid>
    </item>
    <item>
      <title>OESA-2026-3971 — python-tornado security update</title>
      <link>https://vulnerability.circl.lu/vuln/oesa-2026-3971</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; openEuler:24.03-LTS-SP3: python-tornado&lt;/p&gt;
&lt;p&gt;Tornado is an open source version of the scalable, non-blocking web server and tools.&#13;
&#13;
Security Fix(es):&lt;/p&gt;
&lt;p&gt;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)&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; openEuler:24.03-LTS-SP3: python-tornado&lt;/p&gt;
&lt;p&gt;Tornado is an open source version of the scalable, non-blocking web server and tools.&#13;
&#13;
Security Fix(es):&lt;/p&gt;
&lt;p&gt;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)&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/oesa-2026-3971</guid>
    </item>
    <item>
      <title>PYSEC-2026-3928 — Tornado: Urlencoded body parsing omits max_num_fields, so one request can stall the event loop</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3928</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: tornado&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: tornado&lt;/p&gt;
&lt;p&gt;## Summary&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Where it is&lt;/p&gt;
&lt;p&gt;`tornado/escape.py`, at HEAD `e530031405e2154654dedc4c84d5656b557ea310`:&lt;/p&gt;
&lt;p&gt;```python
result = urllib.parse.parse_qs(
    qs, keep_blank_values, strict_parsing, encoding=&amp;#34;latin1&amp;#34;, errors=&amp;#34;strict&amp;#34;
)
```&lt;/p&gt;
&lt;p&gt;`max_num_fields` is the parameter CPython added for exactly this, and it is absent.&lt;/p&gt;
&lt;p&gt;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`.&lt;/p&gt;
&lt;p&gt;The size that reaches it is bounded only by the body cap, which defaults to the stream&amp;#39;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.&lt;/p&gt;
&lt;p&gt;## Impact&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;
&lt;p&gt;## Sug…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3928</guid>
    </item>
    <item>
      <title>SUSE-SU-2026:23523-1 — Security update for python-tornado6</title>
      <link>https://vulnerability.circl.lu/vuln/suse-su-2026:23523-1</link>
      <description>&lt;p&gt;Security update for python-tornado6&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;Security update for python-tornado6&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/suse-su-2026:23523-1</guid>
    </item>
    <item>
      <title>UBUNTU-CVE-2026-82397</title>
      <link>https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-82397</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:16.04:LTS: python-tornado, Ubuntu:Pro:18.04:LTS: python-tornado, Ubuntu:Pro:20.04:LTS: python-tornado, Ubuntu:Pro:22.04:LTS: python-tornado, Ubuntu:24.04:LTS: python-tornado, Ubuntu:26.04:LTS: python-tornado&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Ubuntu:Pro:16.04:LTS: python-tornado, Ubuntu:Pro:18.04:LTS: python-tornado, Ubuntu:Pro:20.04:LTS: python-tornado, Ubuntu:Pro:22.04:LTS: python-tornado, Ubuntu:24.04:LTS: python-tornado, Ubuntu:26.04:LTS: python-tornado&lt;/p&gt;
&lt;p&gt;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.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ubuntu-cve-2026-82397</guid>
    </item>
  </channel>
</rss>
