Executive brief
Axios is a popular HTTP client library used by thousands of applications to make web requests. A vulnerability allows attackers who have already compromised the application's runtime (via a separate exploit) to inject malicious request bodies and headers into outgoing HTTP requests, potentially corrupting data in transit, exposing sensitive information like authorization tokens, or redirecting traffic through attacker-controlled proxies.
Technical details
The vulnerability is a read-side prototype pollution gadget in axios that occurs when Object.prototype has been polluted by another weakness. The primary attack vector affects bodyless HTTP methods (axios.get(), axios.delete(), axios.head(), axios.options()) which read inherited data properties before config normalization, allowing polluted Object.prototype.data to be injected as the request body. Additional gadgets exist in low-level paths: config.proxy in the HTTP adapter can route requests through attacker-controlled proxies, and config.paramsSerializer in resolveConfig() can manipulate URL serialization. The vulnerability requires a two-stage attack: first, a separate vulnerability must pollute Object.prototype; second, axios must make a request. High-level axios calls on version 1.15.2+ are protected by null-prototype config objects returned from mergeConfig(), but direct calls to low-level adapters and helpers with plain config objects remain vulnerable. Patches are available in versions ≥1.18.0 and ≥0.33.0.
Affected products
- Axios axios >=1.0.0, <=1.17.x and <=0.32.x
Timeline
- 2026-07-20: disclosed
- 2026-07-06: advisory
- 2026-07-20: patched: Patched in versions >=1.18.0 and >=0.33.0