<?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>Sat, 03 Oct 2026 06:15:45 +0000</lastBuildDate>
    <item>
      <title>CVE-2026-84380 — HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated</title>
      <link>https://vulnerability.circl.lu/vuln/cve-2026-84380</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pydantic httpx2&lt;/p&gt;
&lt;p&gt;HTTPX2 is a next generation HTTP client for Python. Prior to 2.11.0, Request._prepare() in src/httpx2/httpx2/_models.py can add a body-derived Content-Length header to a request that already contains a caller-supplied Transfer-Encoding header because its setdefault() processing checks each default header independently rather than treating the two framing headers as mutually exclusive. Fixed-size byte, JSON, form, and known-length multipart bodies can therefore be serialized over HTTP/1.1 with both headers, allowing request smuggling or connection desynchronization when downstream intermediaries disagree about which framing header takes precedence. This issue is fixed in version 2.11.0.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; pydantic httpx2&lt;/p&gt;
&lt;p&gt;HTTPX2 is a next generation HTTP client for Python. Prior to 2.11.0, Request._prepare() in src/httpx2/httpx2/_models.py can add a body-derived Content-Length header to a request that already contains a caller-supplied Transfer-Encoding header because its setdefault() processing checks each default header independently rather than treating the two framing headers as mutually exclusive. Fixed-size byte, JSON, form, and known-length multipart bodies can therefore be serialized over HTTP/1.1 with both headers, allowing request smuggling or connection desynchronization when downstream intermediaries disagree about which framing header takes precedence. This issue is fixed in version 2.11.0.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/cve-2026-84380</guid>
    </item>
    <item>
      <title>GHSA-pf96-p4fj-6566 — HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-pf96-p4fj-6566</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: httpx2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;HTTPX2 can automatically add a `Content-Length` header to a request that already contains a caller-supplied `Transfer-Encoding` header. The resulting HTTP/1.1 request contains both framing headers, which can create an ambiguous message boundary and enable request smuggling or connection desynchronization when processed by intermediaries that disagree about which header takes precedence.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When a request body has a known size, HTTPX2&amp;#39;s content encoder returns a default `Content-Length`. `Request._prepare()` applies each default header with `setdefault()`, which only checks whether that same header is already present. It does not check whether the mutually exclusive `Transfer-Encoding` header is present.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;```python
import httpx2&lt;/p&gt;
&lt;p&gt;request = httpx2.Request(
    &amp;#34;POST&amp;#34;,
    &amp;#34;http://example.com/&amp;#34;,
    headers={&amp;#34;Transfer-Encoding&amp;#34;: &amp;#34;chunked&amp;#34;},
    content=b&amp;#34;test 123&amp;#34;,
)&lt;/p&gt;
&lt;p&gt;print(request.headers)
```&lt;/p&gt;
&lt;p&gt;The request contains both:&lt;/p&gt;
&lt;p&gt;```text
Transfer-Encoding: chunked
Content-Length: 8
```&lt;/p&gt;
&lt;p&gt;On an HTTP/1.1 connection, the body is serialized using chunked transfer coding while both headers are sent on the wire. This violates HTTP message-framing requirements. Fixed-size byte, JSON, form, and known-length multipart bodies can reach the affected path.&lt;/p&gt;
&lt;p&gt;Streaming bodies with an explicit `Content-Length` are not affected in current HTTPX2 releases because the automatically generated `Transfer-Encoding` is already suppressed in that direction.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;A…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: httpx2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;HTTPX2 can automatically add a `Content-Length` header to a request that already contains a caller-supplied `Transfer-Encoding` header. The resulting HTTP/1.1 request contains both framing headers, which can create an ambiguous message boundary and enable request smuggling or connection desynchronization when processed by intermediaries that disagree about which header takes precedence.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When a request body has a known size, HTTPX2&amp;#39;s content encoder returns a default `Content-Length`. `Request._prepare()` applies each default header with `setdefault()`, which only checks whether that same header is already present. It does not check whether the mutually exclusive `Transfer-Encoding` header is present.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;```python
import httpx2&lt;/p&gt;
&lt;p&gt;request = httpx2.Request(
    &amp;#34;POST&amp;#34;,
    &amp;#34;http://example.com/&amp;#34;,
    headers={&amp;#34;Transfer-Encoding&amp;#34;: &amp;#34;chunked&amp;#34;},
    content=b&amp;#34;test 123&amp;#34;,
)&lt;/p&gt;
&lt;p&gt;print(request.headers)
```&lt;/p&gt;
&lt;p&gt;The request contains both:&lt;/p&gt;
&lt;p&gt;```text
Transfer-Encoding: chunked
Content-Length: 8
```&lt;/p&gt;
&lt;p&gt;On an HTTP/1.1 connection, the body is serialized using chunked transfer coding while both headers are sent on the wire. This violates HTTP message-framing requirements. Fixed-size byte, JSON, form, and known-length multipart bodies can reach the affected path.&lt;/p&gt;
&lt;p&gt;Streaming bodies with an explicit `Content-Length` are not affected in current HTTPX2 releases because the automatically generated `Transfer-Encoding` is already suppressed in that direction.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;A…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-pf96-p4fj-6566</guid>
    </item>
    <item>
      <title>PYSEC-2026-3849 — HTTPX2: Conflicting Content-Length and Transfer-Encoding headers can be auto-generated</title>
      <link>https://vulnerability.circl.lu/vuln/pysec-2026-3849</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: httpx2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;HTTPX2 can automatically add a `Content-Length` header to a request that already contains a caller-supplied `Transfer-Encoding` header. The resulting HTTP/1.1 request contains both framing headers, which can create an ambiguous message boundary and enable request smuggling or connection desynchronization when processed by intermediaries that disagree about which header takes precedence.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When a request body has a known size, HTTPX2&amp;#39;s content encoder returns a default `Content-Length`. `Request._prepare()` applies each default header with `setdefault()`, which only checks whether that same header is already present. It does not check whether the mutually exclusive `Transfer-Encoding` header is present.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;```python
import httpx2&lt;/p&gt;
&lt;p&gt;request = httpx2.Request(
    &amp;#34;POST&amp;#34;,
    &amp;#34;http://example.com/&amp;#34;,
    headers={&amp;#34;Transfer-Encoding&amp;#34;: &amp;#34;chunked&amp;#34;},
    content=b&amp;#34;test 123&amp;#34;,
)&lt;/p&gt;
&lt;p&gt;print(request.headers)
```&lt;/p&gt;
&lt;p&gt;The request contains both:&lt;/p&gt;
&lt;p&gt;```text
Transfer-Encoding: chunked
Content-Length: 8
```&lt;/p&gt;
&lt;p&gt;On an HTTP/1.1 connection, the body is serialized using chunked transfer coding while both headers are sent on the wire. This violates HTTP message-framing requirements. Fixed-size byte, JSON, form, and known-length multipart bodies can reach the affected path.&lt;/p&gt;
&lt;p&gt;Streaming bodies with an explicit `Content-Length` are not affected in current HTTPX2 releases because the automatically generated `Transfer-Encoding` is already suppressed in that direction.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;A…&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; PyPI: httpx2&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;HTTPX2 can automatically add a `Content-Length` header to a request that already contains a caller-supplied `Transfer-Encoding` header. The resulting HTTP/1.1 request contains both framing headers, which can create an ambiguous message boundary and enable request smuggling or connection desynchronization when processed by intermediaries that disagree about which header takes precedence.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;When a request body has a known size, HTTPX2&amp;#39;s content encoder returns a default `Content-Length`. `Request._prepare()` applies each default header with `setdefault()`, which only checks whether that same header is already present. It does not check whether the mutually exclusive `Transfer-Encoding` header is present.&lt;/p&gt;
&lt;p&gt;For example:&lt;/p&gt;
&lt;p&gt;```python
import httpx2&lt;/p&gt;
&lt;p&gt;request = httpx2.Request(
    &amp;#34;POST&amp;#34;,
    &amp;#34;http://example.com/&amp;#34;,
    headers={&amp;#34;Transfer-Encoding&amp;#34;: &amp;#34;chunked&amp;#34;},
    content=b&amp;#34;test 123&amp;#34;,
)&lt;/p&gt;
&lt;p&gt;print(request.headers)
```&lt;/p&gt;
&lt;p&gt;The request contains both:&lt;/p&gt;
&lt;p&gt;```text
Transfer-Encoding: chunked
Content-Length: 8
```&lt;/p&gt;
&lt;p&gt;On an HTTP/1.1 connection, the body is serialized using chunked transfer coding while both headers are sent on the wire. This violates HTTP message-framing requirements. Fixed-size byte, JSON, form, and known-length multipart bodies can reach the affected path.&lt;/p&gt;
&lt;p&gt;Streaming bodies with an explicit `Content-Length` are not affected in current HTTPX2 releases because the automatically generated `Transfer-Encoding` is already suppressed in that direction.&lt;/p&gt;
&lt;p&gt;### Impact&lt;/p&gt;
&lt;p&gt;A…&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/pysec-2026-3849</guid>
    </item>
  </channel>
</rss>
