<?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>Mon, 28 Sep 2026 11:55:13 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-53538 — Python-Multipart: Semicolon treated as querystring field separator enables parameter smuggling</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-53538</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Kludex python-multipart&lt;/p&gt;
&lt;p&gt;Python-Multipart is a streaming multipart parser for Python. Prior to 0.0.30, QuerystringParser treated ; as a field separator in application/x-www-form-urlencoded bodies, in addition to &amp;amp;. The WHATWG URL standard, modern browsers, and Python&amp;#39;s urllib.parse (since the CVE-2021-23336 fix) treat only &amp;amp; as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component. This vulnerability is fixed in 0.0.30.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; Kludex python-multipart&lt;/p&gt;
&lt;p&gt;Python-Multipart is a streaming multipart parser for Python. Prior to 0.0.30, QuerystringParser treated ; as a field separator in application/x-www-form-urlencoded bodies, in addition to &amp;amp;. The WHATWG URL standard, modern browsers, and Python&amp;#39;s urllib.parse (since the CVE-2021-23336 fix) treat only &amp;amp; as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component. This vulnerability is fixed in 0.0.30.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-53538</guid>
    </item>
    <item>
      <title>GHSA-6jv3-5f52-599m — python-multipart: Semicolon treated as querystring field separator enables parameter smuggling</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-6jv3-5f52-599m</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: python-multipart&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`QuerystringParser` treated `;` as a field separator in `application/x-www-form-urlencoded` bodies, in addition to `&amp;amp;`. The [WHATWG URL standard](https://url.spec.whatwg.org/#urlencoded-parsing), modern browsers, and Python&amp;#39;s `urllib.parse` (since the CVE-2021-23336 fix) treat only `&amp;amp;` as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `python_multipart/multipart.py`, the `FIELD_NAME` and `FIELD_DATA` states located the next separator by scanning for `&amp;amp;` and, failing that, for `;`:&lt;/p&gt;
&lt;p&gt;```python
sep_pos = data.find(b&amp;#34;&amp;amp;&amp;#34;, i)
if sep_pos == -1:
    sep_pos = data.find(b&amp;#34;;&amp;#34;, i)
```&lt;/p&gt;
&lt;p&gt;As a result, `;` acted as a field boundary. Because the fallback only triggered when no `&amp;amp;` remained in the current chunk, tokenization also depended on unrelated bytes later in the buffer and on how the body was split across `write()` calls. This is the same class of issue as CVE-2021-23336 in CPython&amp;#39;s `urllib.parse`.&lt;/p&gt;
&lt;p&gt;For example, a body inspecting WAF or gateway that follows the WHATWG rule (only `&amp;amp;` separates fields) receives:&lt;/p&gt;
&lt;p&gt;```
role=user&amp;amp;x=;role=admin
```&lt;/p&gt;
&lt;p&gt;The upstream parses two fields, `role=user` and `x=&amp;#34;;role=admin&amp;#34;`, sees a benign `role=user`, and forwards the request. `QuerystringParser` parsed the same bytes as three fields: `role=&amp;#34;user&amp;#34;`, `x=&amp;#34;&amp;#34;`, and `role=&amp;#34;admin…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: python-multipart&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`QuerystringParser` treated `;` as a field separator in `application/x-www-form-urlencoded` bodies, in addition to `&amp;amp;`. The [WHATWG URL standard](https://url.spec.whatwg.org/#urlencoded-parsing), modern browsers, and Python&amp;#39;s `urllib.parse` (since the CVE-2021-23336 fix) treat only `&amp;amp;` as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `python_multipart/multipart.py`, the `FIELD_NAME` and `FIELD_DATA` states located the next separator by scanning for `&amp;amp;` and, failing that, for `;`:&lt;/p&gt;
&lt;p&gt;```python
sep_pos = data.find(b&amp;#34;&amp;amp;&amp;#34;, i)
if sep_pos == -1:
    sep_pos = data.find(b&amp;#34;;&amp;#34;, i)
```&lt;/p&gt;
&lt;p&gt;As a result, `;` acted as a field boundary. Because the fallback only triggered when no `&amp;amp;` remained in the current chunk, tokenization also depended on unrelated bytes later in the buffer and on how the body was split across `write()` calls. This is the same class of issue as CVE-2021-23336 in CPython&amp;#39;s `urllib.parse`.&lt;/p&gt;
&lt;p&gt;For example, a body inspecting WAF or gateway that follows the WHATWG rule (only `&amp;amp;` separates fields) receives:&lt;/p&gt;
&lt;p&gt;```
role=user&amp;amp;x=;role=admin
```&lt;/p&gt;
&lt;p&gt;The upstream parses two fields, `role=user` and `x=&amp;#34;;role=admin&amp;#34;`, sees a benign `role=user`, and forwards the request. `QuerystringParser` parsed the same bytes as three fields: `role=&amp;#34;user&amp;#34;`, `x=&amp;#34;&amp;#34;`, and `role=&amp;#34;admin…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-6jv3-5f52-599m</guid>
    </item>
    <item>
      <title>PYSEC-2026-3037 — python-multipart: Semicolon treated as querystring field separator enables parameter smuggling</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3037</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: python-multipart&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`QuerystringParser` treated `;` as a field separator in `application/x-www-form-urlencoded` bodies, in addition to `&amp;amp;`. The [WHATWG URL standard](https://url.spec.whatwg.org/#urlencoded-parsing), modern browsers, and Python&amp;#39;s `urllib.parse` (since the CVE-2021-23336 fix) treat only `&amp;amp;` as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `python_multipart/multipart.py`, the `FIELD_NAME` and `FIELD_DATA` states located the next separator by scanning for `&amp;amp;` and, failing that, for `;`:&lt;/p&gt;
&lt;p&gt;```python
sep_pos = data.find(b&amp;#34;&amp;amp;&amp;#34;, i)
if sep_pos == -1:
    sep_pos = data.find(b&amp;#34;;&amp;#34;, i)
```&lt;/p&gt;
&lt;p&gt;As a result, `;` acted as a field boundary. Because the fallback only triggered when no `&amp;amp;` remained in the current chunk, tokenization also depended on unrelated bytes later in the buffer and on how the body was split across `write()` calls. This is the same class of issue as CVE-2021-23336 in CPython&amp;#39;s `urllib.parse`.&lt;/p&gt;
&lt;p&gt;For example, a body inspecting WAF or gateway that follows the WHATWG rule (only `&amp;amp;` separates fields) receives:&lt;/p&gt;
&lt;p&gt;```
role=user&amp;amp;x=;role=admin
```&lt;/p&gt;
&lt;p&gt;The upstream parses two fields, `role=user` and `x=&amp;#34;;role=admin&amp;#34;`, sees a benign `role=user`, and forwards the request. `QuerystringParser` parsed the same bytes as three fields: `role=&amp;#34;user&amp;#34;`, `x=&amp;#34;&amp;#34;`, and `role=&amp;#34;admin…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: python-multipart&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;`QuerystringParser` treated `;` as a field separator in `application/x-www-form-urlencoded` bodies, in addition to `&amp;amp;`. The [WHATWG URL standard](https://url.spec.whatwg.org/#urlencoded-parsing), modern browsers, and Python&amp;#39;s `urllib.parse` (since the CVE-2021-23336 fix) treat only `&amp;amp;` as a separator. This creates a parser differential: the same bytes are tokenized into different fields than a WHATWG compliant intermediary would produce, allowing an attacker to smuggle extra form fields past an upstream body inspecting component.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;In `python_multipart/multipart.py`, the `FIELD_NAME` and `FIELD_DATA` states located the next separator by scanning for `&amp;amp;` and, failing that, for `;`:&lt;/p&gt;
&lt;p&gt;```python
sep_pos = data.find(b&amp;#34;&amp;amp;&amp;#34;, i)
if sep_pos == -1:
    sep_pos = data.find(b&amp;#34;;&amp;#34;, i)
```&lt;/p&gt;
&lt;p&gt;As a result, `;` acted as a field boundary. Because the fallback only triggered when no `&amp;amp;` remained in the current chunk, tokenization also depended on unrelated bytes later in the buffer and on how the body was split across `write()` calls. This is the same class of issue as CVE-2021-23336 in CPython&amp;#39;s `urllib.parse`.&lt;/p&gt;
&lt;p&gt;For example, a body inspecting WAF or gateway that follows the WHATWG rule (only `&amp;amp;` separates fields) receives:&lt;/p&gt;
&lt;p&gt;```
role=user&amp;amp;x=;role=admin
```&lt;/p&gt;
&lt;p&gt;The upstream parses two fields, `role=user` and `x=&amp;#34;;role=admin&amp;#34;`, sees a benign `role=user`, and forwards the request. `QuerystringParser` parsed the same bytes as three fields: `role=&amp;#34;user&amp;#34;`, `x=&amp;#34;&amp;#34;`, and `role=&amp;#34;admin…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3037</guid>
    </item>
  </channel>
</rss>
