CVE-2026-44489: Axios Prototype Pollution & Proxy Credential Injection
Axios, a widely-used HTTP client library for JavaScript, contains a prototype pollution vulnerability in its configuration merging logic. When a developer uses Axios with a proxy configuration, an attacker can pollute the Object.prototype to inject fake username and password values. These polluted values are then automatically included in Proxy-Authorization headers sent with every proxied HTTP request, potentially leaking attacker-controlled credentials or disrupting authentication. The vulnerability affects Axios versions 1.15.2 through 1.15.x and is resolved in version 1.16.0.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 3.7 LOW · CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:L/A:N
- Weaknesses (CWE)
- CWE-113, CWE-1321
- Affected products
- 1 configuration(s)
- Published / Modified
- 2026-06-11 / 2026-06-17
NVD description (verbatim)
Axios is a promise based HTTP client for the browser and Node.js. From 1.15.2 to before 1.16.0, nested objects created by utils.merge() (e.g., config.proxy) are still constructed as plain {} with Object.prototype in their chain. The setProxy() function at lib/adapters/http.js:209-223 reads proxy.username, proxy.password, and proxy.auth without hasOwnProperty checks. When Object.prototype.username is polluted, setProxy() constructs a Proxy-Authorization header with attacker-controlled credentials and injects it into every proxied HTTP request. This vulnerability is fixed in 1.16.0.
2 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from unsafe object merging in utils.merge() that creates nested proxy configuration objects as plain JavaScript objects with Object.prototype in their prototype chain. The setProxy() function (lib/adapters/http.js, lines 209–223) reads proxy.username, proxy.password, and proxy.auth properties without using hasOwnProperty() checks to distinguish own properties from inherited ones. An attacker who can influence the application's prototype chain—through prototype pollution elsewhere in the codebase or supplied data—can set Object.prototype.username or Object.prototype.password. When setProxy() constructs the Proxy-Authorization header, it reads these polluted inherited properties and injects them into HTTP requests transiting a proxy. This violates the integrity of request headers and may leak or corrupt authentication credentials.
Business impact
For applications using Axios with HTTP proxies, this vulnerability creates a covert channel for header injection. The practical impact depends on proxy configuration and network topology. An attacker capable of prototype pollution could inject false proxy credentials, potentially causing authentication failures, triggering alerts, or—in some scenarios—enabling credential harvesting if logs or monitoring systems capture the injected headers. The severity is moderate because successful exploitation requires both prototype pollution and a proxied HTTP setup; however, if those conditions exist, the attacker gains persistent influence over proxy authentication for all subsequent requests without further interaction.
Affected systems
Axios versions 1.15.2 through 1.15.x are vulnerable. Version 1.16.0 and later include the fix. Any Node.js or browser-based application using Axios in the vulnerable version range is in scope. Risk is elevated for applications that (1) use Axios with explicit proxy configuration, (2) process untrusted JSON or deserialized objects that might be supplied by an attacker, or (3) run code from third-party libraries that could perform prototype pollution.
Exploitability
Exploitation requires two prerequisites: (1) the ability to pollute Object.prototype, typically through a prototype pollution gadget in application code or a vulnerable dependency, and (2) Axios configured to use an HTTP proxy. The CVSS score of 3.7 (LOW) reflects the high bar for achieving prototype pollution, which is not trivial in most well-written applications. However, given the widespread use of Axios and the prevalence of prototype pollution vulnerabilities in the npm ecosystem, opportunistic attacks targeting vulnerable supply chains or misconfigured applications are plausible. No public exploit code is known to be weaponized as of the advisory date.
Remediation
Update Axios to version 1.16.0 or later. No workaround mitigates the root cause if prototype pollution is possible; remediation must occur at the library level. After patching, verify that the application does not use object deserialization patterns that could still introduce prototype pollution from other sources.
Patch guidance
Upgrade Axios to version 1.16.0 or later. For Node.js projects, run `npm update axios` or `yarn upgrade axios`. For browser-based projects using Axios via CDN or bundler, ensure your build process pulls the latest version. Test the upgrade in a staging environment to confirm no breaking changes (the patch is backward compatible). If you cannot immediately upgrade, audit your application for prototype pollution vulnerabilities in dependent code and consider disabling proxy authentication where possible.
Detection guidance
Monitor for signs of prototype pollution in application logs and network traffic. Look for anomalous Proxy-Authorization headers in HTTP requests that do not match your configured proxy credentials. Implement Object.prototype integrity checks (e.g., Object.freeze(Object.prototype) in trusted startup code) to prevent runtime pollution, though this is a defense-in-depth measure and not a substitute for patching. Dependency scanning tools (npm audit, Snyk, etc.) should flag Axios < 1.16.0; integrate these into your CI/CD pipeline.
Why prioritize this
Although the CVSS score is LOW (3.7), the vulnerability merits swift attention because (1) Axios is a critical ecosystem dependency with millions of downloads weekly, (2) prototype pollution is a known attack vector in JavaScript, and (3) proxy misconfiguration is common in enterprise environments. Organizations using Axios with proxies should patch within their normal critical-dependency update window. For projects without proxy usage, the risk is negligible but upgrading incurs minimal cost.
Risk score, explained
The CVSS:3.1 score of 3.7 (LOW) reflects a network-accessible attack requiring high complexity (prototype pollution is non-trivial) and no privileges. The impact is limited to integrity (header injection) with no confidentiality or availability impact in isolation. However, context matters: organizations whose architecture involves both Axios and prototype pollution risk vectors should weight this higher internally.
Frequently asked questions
Can this be exploited in the browser?
Browser environments are less susceptible to prototype pollution than Node.js because browser-based Axios typically does not use HTTP proxies (proxy configuration is browser-native). However, if a browser application uses Axios with a proxy-like layer or if prototype pollution exists in application JavaScript, the vulnerability could theoretically be triggered. Node.js server-side usage is the primary concern.
Do I need to patch if I do not use Axios with a proxy?
If your Axios configuration does not include a proxy setting, the setProxy() function is not called and this vulnerability is not exploitable. However, we recommend patching as a best practice and to eliminate prototype pollution as a risk surface in general. Prototype pollution could enable other attacks in the future.
What is the difference between this vulnerability and earlier Axios issues?
This vulnerability is specific to the unsafe merging of proxy configuration objects and the missing hasOwnProperty checks in setProxy(). Earlier Axios issues have involved other aspects of the library; always check the specific CVE description and fixed version to ensure you are addressing the right issue.
Are there any known public exploits?
As of the advisory publication date, no public exploit code has been released for this vulnerability. Exploitation requires external prototype pollution, making this a secondary vulnerability in most real-world scenarios. However, this does not diminish the importance of patching.
This analysis is based on the CVE record and vendor advisories current as of the publication date. Version numbers and patch status should be verified against the official Axios GitHub repository and security advisories. The information is provided for informational purposes to support security decision-making; it is not legal advice. Organizations must conduct their own risk assessment based on their environment and usage patterns. No exploit code is provided or endorsed in this analysis. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-44490MEDIUMAxios Prototype Pollution via Merge and Property Descriptor Gadgets
- CVE-2026-44494HIGHAxios Prototype Pollution to MITM Gadget Chain (v1.0.0–1.15.x)
- CVE-2026-12208MEDIUMPrototype Pollution in jsonata-js Library—Exploitation and Remediation Guide
- CVE-2026-12209MEDIUMRubyLouvre Avalon Prototype Pollution Vulnerability – Exploitation Active
- CVE-2026-38978MEDIUMTransmission Clickjacking Vulnerability in WebUI and RPC Paths
- CVE-2026-44495HIGHAxios Prototype Pollution Gadget Vulnerability (0.31.0 & 1.15.1)
- CVE-2026-45302HIGHPrototype Pollution in parse-nested-form-data Before 1.0.1
- CVE-2026-46509HIGHPrototype Pollution in deepobj JavaScript Library