Axios: Full Man-in-the-Middle via Prototype Pollution Gadget in `config.proxy`
Axios is a promise based HTTP client for the browser and Node.js. From 1.0.0 to before 1.16.0, the Axios library is vulnerable to a Prototype Pollution "Gadget" attack that allows any Object.prototype pollution in the application's dependency tree to be escalated into a full Man-in-the-Middle (MITM) attack — intercepting, reading, and modifying all HTTP traffic including authentication credentials. The HTTP adapter at lib/adapters/http.js:670 reads config.proxy via standard property access, which traverses the prototype chain. Because proxy is not present in Axios defaults, the merged config object has no own proxy property, making it trivially injectable via prototype pollution. Once injected, setProxy() routes all HTTP requests through the attacker's proxy server. This vulnerability is fixed in 1.16.0.
Problem Types
| Type | CWE ID | Description |
|---|
| CWE | CWE-441 | CWE-441: Unintended Proxy or Intermediary ('Confused Deputy') |
| CWE | CWE-1321 | CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution') |
Type: CWE
Description: CWE-441: Unintended Proxy or Intermediary ('Confused Deputy')
Type: CWE
Description: CWE-1321: Improperly Controlled Modification of Object Prototype Attributes ('Prototype Pollution')
Metrics
| Version | Base score | Base severity | Vector |
|---|
| 3.1 | 8.7 | HIGH | CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N |
Version: 3.1
Base score: 8.7
Base severity: HIGH
Vector: CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:C/C:H/I:H/A:N