<?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, 10 Oct 2026 22:43:19 +0000</lastBuildDate>
    <item>
      <title>GHSA-5c9x-8gcm-mpgx — Axios' HTTP adapter-streamed uploads bypass maxBodyLength when maxRedirects: 0</title>
      <link>https://vulnerability.circl.lu/vuln/ghsa-5c9x-8gcm-mpgx</link>
      <description>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: axios&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;For stream request bodies, maxBodyLength is bypassed when maxRedirects is set to 0 (native http/https transport path). Oversized streamed uploads are sent fully even when the caller sets strict body limits.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Relevant flow in lib/adapters/http.js:
  - 556-564: maxBodyLength check applies only to buffered/non-stream data.
  - 681-682: maxRedirects === 0 selects native http/https transport.
  - 694-699: options.maxBodyLength is set, but native transport does not enforce it.
  - 925-945: stream is piped directly to socket (data.pipe(req)) with no Axios byte counting.&lt;/p&gt;
&lt;p&gt;This creates a path-specific bypass for streamed uploads.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Environment:&lt;/p&gt;
&lt;p&gt;- Axios main at commit f7a4ee2
  - Node v24.2.0&lt;/p&gt;
&lt;p&gt;Steps:
  1. Start an HTTP server that counts uploaded bytes and returns {received}.
  2. Send a 2 MiB Readable stream with:
      - adapter: &amp;#39;http&amp;#39;
      - maxBodyLength: 1024
      - maxRedirects: 0&lt;/p&gt;
&lt;p&gt;Observed:
  - Request succeeds; server reports received: 2097152.&lt;/p&gt;
&lt;p&gt;Control checks:
  - Same stream with default/nonzero redirects: rejected with ERR_FR_MAX_BODY_LENGTH_EXCEEDED.
  - Buffered body with maxRedirects: 0: rejected with ERR_BAD_REQUEST.&lt;/p&gt;
&lt;p&gt;### Impact
Type: DoS / uncontrolled upstream upload / resource exhaustion.
Impacted: Node.js services using streamed request bodies with maxBodyLength expecting hard enforcement, especially when following Axios guidance to use maxRedirects: 0 for streams.&lt;/p&gt;</description>
      <content:encoded>&lt;p&gt;&lt;strong&gt;Affected:&lt;/strong&gt; npm: axios&lt;/p&gt;
&lt;p&gt;### Summary&lt;/p&gt;
&lt;p&gt;For stream request bodies, maxBodyLength is bypassed when maxRedirects is set to 0 (native http/https transport path). Oversized streamed uploads are sent fully even when the caller sets strict body limits.&lt;/p&gt;
&lt;p&gt;### Details&lt;/p&gt;
&lt;p&gt;Relevant flow in lib/adapters/http.js:
  - 556-564: maxBodyLength check applies only to buffered/non-stream data.
  - 681-682: maxRedirects === 0 selects native http/https transport.
  - 694-699: options.maxBodyLength is set, but native transport does not enforce it.
  - 925-945: stream is piped directly to socket (data.pipe(req)) with no Axios byte counting.&lt;/p&gt;
&lt;p&gt;This creates a path-specific bypass for streamed uploads.&lt;/p&gt;
&lt;p&gt;### PoC&lt;/p&gt;
&lt;p&gt;Environment:&lt;/p&gt;
&lt;p&gt;- Axios main at commit f7a4ee2
  - Node v24.2.0&lt;/p&gt;
&lt;p&gt;Steps:
  1. Start an HTTP server that counts uploaded bytes and returns {received}.
  2. Send a 2 MiB Readable stream with:
      - adapter: &amp;#39;http&amp;#39;
      - maxBodyLength: 1024
      - maxRedirects: 0&lt;/p&gt;
&lt;p&gt;Observed:
  - Request succeeds; server reports received: 2097152.&lt;/p&gt;
&lt;p&gt;Control checks:
  - Same stream with default/nonzero redirects: rejected with ERR_FR_MAX_BODY_LENGTH_EXCEEDED.
  - Buffered body with maxRedirects: 0: rejected with ERR_BAD_REQUEST.&lt;/p&gt;
&lt;p&gt;### Impact
Type: DoS / uncontrolled upstream upload / resource exhaustion.
Impacted: Node.js services using streamed request bodies with maxBodyLength expecting hard enforcement, especially when following Axios guidance to use maxRedirects: 0 for streams.&lt;/p&gt;</content:encoded>
      <guid isPermaLink="false">https://vulnerability.circl.lu/vuln/ghsa-5c9x-8gcm-mpgx</guid>
    </item>
  </channel>
</rss>
