CVE-2026-67320: axios before 0.33.0 Prototype Pollution via Node HTTP adapter
axios in a Node.js deployment using the HTTP adapter can route requests through an attacker-controlled proxy. axios hardens merged request configuration by creating a null-prototype object, but request interceptors run after the merge; a common immutable interceptor pattern such as {...config} or Object.assign({}, config) converts the hardened config back into a regular object. axios then dispatches that object without re-hardening it, and the Node HTTP adapter reads config.proxy through the prototype chain. If an attacker can pollute Object.prototype.proxy, affected requests can be routed through an attacker-controlled proxy. For plaintext HTTP requests, the proxy can observe Authorization headers, Basic auth from config.auth, method, absolute URL, Host, and request body, and can return its own response. This does not establish browser impact or HTTPS header/body disclosure under normal TLS validation. Affected versions are =0.31.1 (fixed in 0.33.0) and =1.15.2 (fixed in 1.18.0).
Other sources
axios in a Node.js deployment using the HTTP adapter can route requests through an attacker-controlled proxy. axios hardens merged request configuration by creating a null-prototype object, but request interceptors run after the merge; a common immutable interceptor pattern such as {...config} or Object.assign({}, config) converts the hardened config back into a regular object. axios then dispatches that object without re-hardening it, and the Node HTTP adapter reads config.proxy through the prototype chain. If an attacker can pollute Object.prototype.proxy, affected requests can be routed through an attacker-controlled proxy. For plaintext HTTP requests, the proxy can observe Authorization headers, Basic auth from config.auth, method, absolute URL, Host, and request body, and can return its own response. This does not establish browser impact or HTTPS header/body disclosure under normal TLS validation. Affected versions are >=0.31.1 (fixed in 0.33.0) and >=1.15.2 (fixed in 1.18.0).
— MITRE
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Upgrade
Upgrade
axiosto a version that resolves this vulnerability.Fixed in 0.33.0 - Upgrade
Upgrade
axiosto a version that resolves this vulnerability.Fixed in 1.18.0 - Configuration
In axios request interceptors (Node.js HTTP adapter), do not use interceptor merge patterns like `{...config}` or `Object.assign({}, config)`, which convert axios’ null-prototype merged request configuration back into a regular object and can reintroduce prototype-polluted fields like `config.proxy`.
axios (Node.js HTTP adapter) request configuration object handling (proxy property via prototype) = Use an immutable interceptor pattern that preserves the null-prototype hardened config object (avoid {...config} and Object.assign({}, config) in interceptors)
Event History
Frequently Asked Questions
What is the severity of CVE-2026-67320?
The severity of CVE-2026-67320 is high, rated at 8.3 on the CVSS scale.
How do I fix CVE-2026-67320?
To fix CVE-2026-67320, upgrade axios to version 0.33.0 or later.
What type of vulnerability is CVE-2026-67320?
CVE-2026-67320 is a prototype pollution vulnerability affecting axios.
What is affected by CVE-2026-67320?
CVE-2026-67320 affects axios versions before 0.33.0 that utilize the Node HTTP adapter.
Can CVE-2026-67320 lead to information leaks?
Yes, CVE-2026-67320 can potentially lead to information leaks due to its nature of allowing routing through attacker-controlled proxies.