Skip to main content
CVE Vulnerability Database
Vulnerability Database/CVE-2026-67316

CVE-2026-67316: Axios Prototype Pollution Vulnerability

CVE-2026-67316 is a prototype pollution vulnerability in axios that allows attackers to alter request construction and inject malicious data. This article covers technical details, affected versions, and mitigation.

Published:

CVE-2026-67316 Overview

CVE-2026-67316 is a prototype pollution gadget vulnerability [CWE-1321] in the axios HTTP client library for JavaScript. The flaw allows attackers to influence outbound HTTP requests when Object.prototype has been polluted by a separate vulnerability or dependency. In bodyless method aliases such as axios.get(), axios.delete(), axios.head(), and axios.options(), inherited data is read through (config || {}).data before config normalization. This causes an attacker-controlled body to be attached to requests that never set one. Additional gadgets in low-level exports like lib/adapters/http.js and unsafe/helpers/resolveConfig.js can inherit polluted proxy or paramsSerializer values. The issue is fixed in axios 1.18.0 and 0.33.0.

Critical Impact

Attackers who can pollute Object.prototype in a Node.js process can inject request bodies, reroute traffic through an attacker-controlled proxy, or alter URL serialization on axios calls.

Affected Products

  • axios versions prior to 1.18.0 (1.x branch)
  • axios versions prior to 0.33.0 (0.x branch)
  • Node.js applications using bodyless axios method aliases or low-level adapter/helper exports

Discovery Timeline

  • 2026-08-01 - CVE-2026-67316 published to NVD
  • 2026-08-03 - Last updated in NVD database

Technical Details for CVE-2026-67316

Vulnerability Analysis

The vulnerability is a read-side prototype pollution gadget rather than a direct pollution primitive. It requires Object.prototype to already be polluted by another flaw or dependency in the same process. Once polluted, axios reads inherited properties from plain objects during request construction, producing behavior the caller never configured.

In the bodyless method aliases, axios evaluates (config || {}).data before running its normalization routines. When Object.prototype.data has been set by an attacker, axios.get(), axios.delete(), axios.head(), and axios.options() will silently attach that value as the request body. Servers that trust body content on ostensibly bodyless methods can then be manipulated.

Lower-level exports such as lib/adapters/http.js and unsafe/helpers/resolveConfig.js, when invoked directly with plain configs that lack an own proxy or paramsSerializer, inherit polluted values. Attackers can reroute requests through their own proxy or control URL serialization. These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2 or later.

Root Cause

The root cause is missing null-prototype handling and pre-normalization property reads on user-supplied config objects. Because plain objects inherit from Object.prototype, any prototype pollution flows directly into axios request construction.

Attack Vector

Exploitation requires a pre-existing prototype pollution primitive in the application or its dependencies. The attacker sets attacker-controlled values on Object.prototype.data, Object.prototype.proxy, or Object.prototype.paramsSerializer. Subsequent axios calls then inherit those values, resulting in unauthorized request bodies, proxy redirection, or manipulated URL parameter serialization.

No verified proof-of-concept code is published in the referenced advisories. See the GitHub Security Advisory and the VulnCheck Security Advisory for technical details.

Detection Methods for CVE-2026-67316

Indicators of Compromise

  • Outbound HTTP GET, DELETE, HEAD, or OPTIONS requests originating from Node.js services that unexpectedly carry a request body.
  • Egress connections from application hosts to unknown proxy endpoints not defined in application configuration.
  • Anomalous URL query serialization patterns in outbound requests generated by services using axios.

Detection Strategies

  • Inventory package-lock.json and yarn.lock files across repositories and build artifacts to identify axios versions below 1.18.0 and 0.33.0.
  • Run software composition analysis (SCA) against production images to flag vulnerable axios versions and transitive dependencies with known prototype pollution issues.
  • Enable runtime logging of outbound HTTP request metadata (method, host, body length, proxy) from Node.js workloads and alert on unexpected bodies on bodyless methods.

Monitoring Recommendations

  • Monitor egress traffic for connections to unauthorized proxy hosts from application subnets.
  • Correlate CI/CD dependency updates with runtime telemetry to detect newly introduced vulnerable axios versions.
  • Track process-level Node.js behavior for signs of prototype pollution exploitation preceding axios calls.

How to Mitigate CVE-2026-67316

Immediate Actions Required

  • Upgrade axios to version 1.18.0 on the 1.x branch or 0.33.0 on the 0.x branch across all Node.js services.
  • Audit dependencies for known prototype pollution vulnerabilities that could supply the required pollution primitive.
  • Review code paths that pass user-controlled data into object merges, Object.assign, or recursive copy utilities.

Patch Information

The axios maintainers fixed the issue in axios@1.18.0 and axios@0.33.0. Update using npm install axios@^1.18.0 or npm install axios@^0.33.0 depending on the branch in use. Refer to the GitHub Security Advisory GHSA-mmx7-hfxf-jppx for release notes.

Workarounds

  • Freeze Object.prototype early in application startup using Object.freeze(Object.prototype) where compatible with dependencies.
  • Pass configs constructed with Object.create(null) to axios calls to avoid inheriting from Object.prototype.
  • Avoid direct use of low-level exports such as lib/adapters/http.js and unsafe/helpers/resolveConfig.js with plain configs.
  • Explicitly set proxy: false and provide an own paramsSerializer on requests that must not inherit these fields.
bash
# Upgrade axios to a patched release
npm install axios@^1.18.0
# or, for the 0.x branch
npm install axios@^0.33.0

# Verify installed version
npm ls axios

Disclaimer: This content was generated using AI. While we strive for accuracy, please verify critical information with official sources.

Default Legacy - Prefooter | Experience the World’s Most Advanced Cybersecurity Platform

Experience the Most Advanced Cybersecurity Platform

See how the world’s most intelligent, autonomous cybersecurity platform can protect your organization today and into the future.