AI analysis
Axios 1.13.0 through versions before 1.20.0 does not consistently apply proxy settings or a caller-supplied DNS lookup policy when it sets up HTTP/2 requests. An HTTPS request that uses httpVersion 2 with an explicit config.proxy, an environment-derived proxy, or config.lookup can reach http2.connect() without that proxy behavior or DNS policy. Requests can therefore leave the intended proxy route or ignore the caller’s DNS resolution policy, which can defeat controls applications use to limit outbound requests and is tracked as server-side request forgery (CWE-918), with high impact assessed against subsequent systems rather than Axios itself. Node.js and browser applications that depend on Axios in that range and use HTTP/2 with those settings are affected. No public proof of concept is known, and the issue is not listed in CISA KEV.
What to do: Upgrade Axios to 1.20.0 or later. Until then, do not rely on config.proxy, environment proxy variables, or config.lookup to constrain HTTPS requests that set httpVersion to 2; confirm outbound calls still follow the intended proxy and DNS policy.
Affected
| axios | 1.13.0 up to, but not including, 1.20.0 |
Estimated exposure
massmillions of Node.js applications using Axios 1.13.0–1.19.x — Axios is one of the most widely depended-on npm HTTP clients, with on the order of tens of millions of weekly downloads, so even the limited 1.13.0–pre-1.20.0 range is plausibly present in millions of Node.js apps; impact is only where…
Order-of-magnitude estimate by the model from install counts, market share and public scan data it knows; verify before quoting.
Description
Axios is a promise-based HTTP client for the browser and Node.js. From 1.13.0 until 1.20.0, Axios HTTP/2 request setup does not consistently apply proxy settings and caller-supplied DNS lookup policy. An HTTPS request uses httpVersion: 2 with explicit config.proxy or environment-derived proxy settings, or relies on caller-supplied config.lookup DNS policy. The HTTP/2 path can connect without the configured proxy behavior or without applying the caller-supplied config.lookup policy before http2.connect(). Requests can bypass the intended proxy route or the caller-supplied DNS resolution policy. This issue is fixed in version 1.20.0.