CVE-2026-67319
PoC massSecond-Order Prototype Pollution in axios Can Inject Authorization Headers
axios versions before 0.33.0 and 1.x versions before 1.18.0 merge nested request-option objects (such as auth and paramsSerializer) into ordinary objects and read their properties without own-property checks, so they can pick up inherited keys when Object.prototype has already been polluted by a separate component. If the running process's Object.prototype has been polluted with username/password values, an application that passes placeholder objects such as auth: {} silently sends requests with an injected Authorization: Basic header, and polluted encode or serialize values can alter query-string serialization (fully replacing the serializer requires the pollution primitive to carry a function value). An attacker who first gains a prototype-pollution primitive anywhere in the same process can thereby tamper with how outbound requests are authenticated and how their URLs are built, producing a limited integrity impact with no confidentiality or availability loss. Only JavaScript applications (Node.js or browser bundles) running a vulnerable axios version that also carry a working prototype pollution bug from another component are affected. No in-the-wild exploitation has been reported: the issue is not in CISA's KEV catalog, EPSS estimates a 0.2% probability of exploitation within 30 days, and a public advisory with proof-of-concept details exists on the axios GitHub repository.
What to do: Upgrade axios to 0.33.0 or later on the 0.x line and to 1.18.0 or later on the 1.x line, checking lockfiles and transitive dependencies for pinned vulnerable versions. Remediate any known prototype pollution vulnerabilities in the same Node.js or browser process, since they are the required trigger for this flaw. Also review whether your code passes empty nested option objects such as auth: {} or paramsSerializer: {} into axios calls.
| axios | all versions before 0.33.0 |
| axios | 1.x before 1.18.0 |
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
axios before 0.33.0 (and 1.x before 1.18.0) can consume inherited properties from nested request option objects when the JavaScript process's Object.prototype has already been polluted by another component. While the top-level merged config uses a null prototype, nested plain objects such as auth and paramsSerializer are cloned into ordinary objects and read without own-property checks. When an application passes placeholder nested objects such as auth: {} or paramsSerializer: {}, inherited username/password values can cause silent injection of an Authorization: Basic header, and inherited encode/serialize values can alter query-string serialization (full serializer replacement requires a function-valued pollution primitive). This is exploitable only in the presence of pre-existing prototype pollution.
- Vendors
- axios
- Products
- axios
- Weakness
- CWE-1321
- Vector
- CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X
In the news0 stories
No ingested article mentions this CVE yet.