Every CVE Search/ Get API key

CVE-2026-67316

axios before 1.18.0 Prototype Pollution via bodyless methods

6.3 MediumFix available

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
High
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
Low
Availability
None

Exploit likelihood

0.42%Up 0.2 points since Aug 2, 2026
90%50%10%1%

What each source reports

CVE List Score used 6.3

axios before 1.18.0 Prototype Pollution via bodyless methods

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
CVE-2026-67316
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-1321
Updated
2026-11-02
EUVDEUVD-2026-51827 6.3

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
EUVD-2026-51827
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Updated
2026-11-02
GitHub AdvisoriesGHSA-7q8q-rj6j-mhjq 6.3

Axios: Nested axios option objects can consume polluted prototype values

Summary

Axios can consume inherited properties from nested request option objects when the JavaScript process already has a polluted Object.prototype.

The top-level merged config is protected with a null prototype, but nested plain objects such as auth and paramsSerializer are cloned into ordinary objects. If application code passes placeholders such as auth: {} or paramsSerializer: {}, inherited username, password, encode, or serialize properties can influence outbound requests.

Impact

This is reachable only when another component has already polluted Object.prototype and the application passes an affected nested axios option object.

Confirmed impacts include silent injection of an Authorization: Basic ... header from inherited username and password values, and query-string tampering when inherited paramsSerializer fields are function-valued.

The auth case requires only string-valued pollution. Full query-string replacement through paramsSerializer.serialize requires a function-valued pollution primitive; string-only pollution may still cause request failures or encoding changes through encode.

This does not mean every axios request is affected. Requests that do not pass auth, do not pass paramsSerializer, or provide explicit own properties for the relevant nested fields are not affected by this specific gadget.

Affected Functionality

Affected runtime functionality:

  • Node HTTP adapter Basic auth handling in lib/adapters/http.js.
  • Browser/fetch/XHR Basic auth handling through lib/helpers/resolveConfig.js.
  • Query serialization through lib/helpers/buildURL.js.
  • axios.getUri() when called with an affected paramsSerializer object.

Affected config shapes:

  • auth: {} or an auth object missing own username and/or password.
  • paramsSerializer: {} or a paramsSerializer object missing own encode and/or serialize.

Unaffected by this specific issue:

  • Requests with no auth property.
  • Requests with no paramsSerializer property.
  • Top-level polluted auth or paramsSerializer values in current hardened versions.

Technical Details

lib/core/mergeConfig.js creates the top-level merged config with Object.create(null), but nested object cloning still uses ordinary {} containers:

} else if (utils.isPlainObject(source)) {
  return utils.merge({}, source);
}

Downstream code then reads nested fields without own-property checks.

In lib/helpers/resolveConfig.js:

btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))

In lib/adapters/http.js:

const username = configAuth.username || '';
const password = configAuth.password || '';
auth = username + ':' + password;

In lib/helpers/buildURL.js:

const _encode = (options && options.encode) || encode;
const serializeFn = _options && _options.serialize;

Proof of Concept of Attack

import http from 'node:http';
import axios from './index.js';

const user = 'attacker';
const pass = 'exfil';

Object.defineProperty(Object.prototype, 'username', {
  value: user,
  configurable: true
});

Object.defineProperty(Object.prototype, 'password', {
  value: pass,
  configurable: true
});

Object.defineProperty(Object.prototype, 'serialize', {
  value: () => 'polluted=1',
  configurable: true
});

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'content-type': 'application/json' });
  res.end(JSON.stringify({
    authorization: req.headers.authorization || null,
    url: req.url
  }));
});

await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve));

try {
  const port = server.address().port;
  const response = await axios.get(`http://127.0.0.1:${port}/demo`, {
    auth: {},
    paramsSerializer: {},
    params: { unused: 'ignored' }
  });

  console.log(response.data);
} finally {
  await new Promise((resolve) => server.close(resolve));
  delete Object.prototype.username;
  delete…
Record
GHSA-7q8q-rj6j-mhjq
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N
Weakness
CWE-1321
Updated
2026-11-02
GitHub AdvisoriesGHSA-f2r5-pqh9-r8f8 6.3

Duplicate Advisory: Axios: Prototype pollution gadgets can alter axios request construction

Duplicate Advisory

This advisory has been withdrawn because it is a duplicate of GHSA-mmx7-hfxf-jppx. This link is maintained to preserve external references.

Original Description

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
GHSA-f2r5-pqh9-r8f8
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/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
Weakness
CWE-1321
Updated
2026-11-02
GitHub AdvisoriesGHSA-mmx7-hfxf-jppx 6.3

Axios: Prototype pollution gadgets can alter axios request construction

Summary

axios is vulnerable to read-side prototype-pollution gadgets when Object.prototype has already been polluted by another vulnerability or dependency. The most broadly reachable issue is in the bodyless method aliases: axios.get(), axios.delete(), axios.head(), and axios.options() read inherited data before config normalization, causing attacker-controlled body data to be sent on requests that did not explicitly set a body.

Additional low-level paths affect consumers that call exported adapters/helpers directly with plain config objects. In those cases, inherited proxy or paramsSerializer values can influence request routing or URL serialization. These low-level paths are not reproduced through normal axios.get() usage on 1.15.2+.

Impact

An attacker who can first pollute Object.prototype can cause axios to send attacker-controlled request bodies on bodyless method aliases. This can corrupt request semantics where the receiving service processes bodies on GET, DELETE, HEAD, or OPTIONS.

For direct low-level Node HTTP adapter usage, inherited proxy can route requests through an attacker-controlled proxy. Depending on axios version, target scheme, and proxy behavior, this can expose request URLs, headers, and bodies or allow traffic modification.

For direct resolveConfig or browser-adapter helper usage, inherited paramsSerializer can be invoked with request params, allowing attacker-controlled URL serialization. This was not reproduced through normal high-level axios calls on 1.15.2+.

Affected Functionality

Affected normal API:

  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.options(url[, config])

Affected low-level usage:

  • Direct calls to axios/lib/adapters/http.js or axios/unsafe/adapters/http.js with plain configs and no own proxy.
  • Direct calls to axios/unsafe/helpers/resolveConfig.js or direct browser adapter/helper paths with plain configs and no own paramsSerializer.

Unaffected or corrected scope:

  • Normal axios.get() calls on 1.15.2+ did not reproduce the proxy or paramsSerializer gadgets because mergeConfig() returns a null-prototype config and uses own-property reads.

Technical Details

lib/core/Axios.js constructs aliases for bodyless methods and copies data with (config || {}).data before config normalization. If Object.prototype.data is polluted, this inherited value becomes an own data property in the merged request config and is sent by the adapter.

lib/core/mergeConfig.js in 1.15.2+ returns a null-prototype config and uses hasOwnProp guards, which prevents normal high-level requests from inheriting polluted proxy and paramsSerializer values after merge. This is why those two reporter claims do not reproduce through normal axios.get() on 1.15.2 or 1.16.1.

The low-level adapter/helper paths can still receive plain configs directly. In that usage, direct reads of config.proxy in the Node HTTP adapter and config.paramsSerializer in affected resolveConfig() versions can consume inherited polluted values.

Proof of Concept of Attack

import http from 'http';
import axios from 'axios';

const server = http.createServer((req, res) => {
  let body = '';

  req.on('data', chunk => {
    body += chunk;
  });

  req.on('end', () => {
    res.writeHead(200, {'content-type': 'application/json'});
    res.end(JSON.stringify({body, headers: req.headers}));
  });
});

await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));

Object.prototype.data = 'INJECTED';

try {
  const res = await axios.get(`http://127.0.0.1:${server.address().port}/data`);

  console.log(res.data.body); // "INJECTED"
  console.log(res.data.headers['content-length']); // "8"
} finally {
  delete Object.prototype.data;
  await new Promise(resolve => server.close(resolve));
}

Expected result: a request body is sent even though the caller did not explicitly…

Record
GHSA-mmx7-hfxf-jppx
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-1321
Updated
2026-11-02
NVD 6.3

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
CVE-2026-67316
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/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
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Weakness
CWE-1321
Updated
2026-11-02
Show 30 moreShow less
OSV 6.3

axios before 1.18.0 Prototype Pollution via bodyless methods

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
CVE-2026-67316
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-1321
Updated
2026-11-02
OSVDEBIAN-CVE-2026-67316 7.4

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
DEBIAN-CVE-2026-67316
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVGHSA-7q8q-rj6j-mhjq 6.3

Axios: Nested axios option objects can consume polluted prototype values

Summary

Axios can consume inherited properties from nested request option objects when the JavaScript process already has a polluted Object.prototype.

The top-level merged config is protected with a null prototype, but nested plain objects such as auth and paramsSerializer are cloned into ordinary objects. If application code passes placeholders such as auth: {} or paramsSerializer: {}, inherited username, password, encode, or serialize properties can influence outbound requests.

Impact

This is reachable only when another component has already polluted Object.prototype and the application passes an affected nested axios option object.

Confirmed impacts include silent injection of an Authorization: Basic ... header from inherited username and password values, and query-string tampering when inherited paramsSerializer fields are function-valued.

The auth case requires only string-valued pollution. Full query-string replacement through paramsSerializer.serialize requires a function-valued pollution primitive; string-only pollution may still cause request failures or encoding changes through encode.

This does not mean every axios request is affected. Requests that do not pass auth, do not pass paramsSerializer, or provide explicit own properties for the relevant nested fields are not affected by this specific gadget.

Affected Functionality

Affected runtime functionality:

  • Node HTTP adapter Basic auth handling in lib/adapters/http.js.
  • Browser/fetch/XHR Basic auth handling through lib/helpers/resolveConfig.js.
  • Query serialization through lib/helpers/buildURL.js.
  • axios.getUri() when called with an affected paramsSerializer object.

Affected config shapes:

  • auth: {} or an auth object missing own username and/or password.
  • paramsSerializer: {} or a paramsSerializer object missing own encode and/or serialize.

Unaffected by this specific issue:

  • Requests with no auth property.
  • Requests with no paramsSerializer property.
  • Top-level polluted auth or paramsSerializer values in current hardened versions.

Technical Details

lib/core/mergeConfig.js creates the top-level merged config with Object.create(null), but nested object cloning still uses ordinary {} containers:

} else if (utils.isPlainObject(source)) {
  return utils.merge({}, source);
}

Downstream code then reads nested fields without own-property checks.

In lib/helpers/resolveConfig.js:

btoa((auth.username || '') + ':' + (auth.password ? encodeUTF8(auth.password) : ''))

In lib/adapters/http.js:

const username = configAuth.username || '';
const password = configAuth.password || '';
auth = username + ':' + password;

In lib/helpers/buildURL.js:

const _encode = (options && options.encode) || encode;
const serializeFn = _options && _options.serialize;

Proof of Concept of Attack

import http from 'node:http';
import axios from './index.js';

const user = 'attacker';
const pass = 'exfil';

Object.defineProperty(Object.prototype, 'username', {
  value: user,
  configurable: true
});

Object.defineProperty(Object.prototype, 'password', {
  value: pass,
  configurable: true
});

Object.defineProperty(Object.prototype, 'serialize', {
  value: () => 'polluted=1',
  configurable: true
});

const server = http.createServer((req, res) => {
  res.writeHead(200, { 'content-type': 'application/json' });
  res.end(JSON.stringify({
    authorization: req.headers.authorization || null,
    url: req.url
  }));
});

await new Promise((resolve) => server.listen(0, '127.0.0.1', resolve));

try {
  const port = server.address().port;
  const response = await axios.get(`http://127.0.0.1:${port}/demo`, {
    auth: {},
    paramsSerializer: {},
    params: { unused: 'ignored' }
  });

  console.log(response.data);
} finally {
  await new Promise((resolve) => server.close(resolve));
  delete Object.prototype.username;
  delete…
Record
GHSA-7q8q-rj6j-mhjq
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:L/SA:N
Weakness
CWE-1321
Updated
2026-11-02
OSVGHSA-f2r5-pqh9-r8f8 6.3

Duplicate Advisory: Axios: Prototype pollution gadgets can alter axios request construction

Duplicate Advisory

This advisory has been withdrawn because it is a duplicate of GHSA-mmx7-hfxf-jppx. This link is maintained to preserve external references.

Original Description

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
GHSA-f2r5-pqh9-r8f8
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/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
Weakness
CWE-1321
Updated
2026-11-02
OSVGHSA-mmx7-hfxf-jppx 6.3

Axios: Prototype pollution gadgets can alter axios request construction

Summary

axios is vulnerable to read-side prototype-pollution gadgets when Object.prototype has already been polluted by another vulnerability or dependency. The most broadly reachable issue is in the bodyless method aliases: axios.get(), axios.delete(), axios.head(), and axios.options() read inherited data before config normalization, causing attacker-controlled body data to be sent on requests that did not explicitly set a body.

Additional low-level paths affect consumers that call exported adapters/helpers directly with plain config objects. In those cases, inherited proxy or paramsSerializer values can influence request routing or URL serialization. These low-level paths are not reproduced through normal axios.get() usage on 1.15.2+.

Impact

An attacker who can first pollute Object.prototype can cause axios to send attacker-controlled request bodies on bodyless method aliases. This can corrupt request semantics where the receiving service processes bodies on GET, DELETE, HEAD, or OPTIONS.

For direct low-level Node HTTP adapter usage, inherited proxy can route requests through an attacker-controlled proxy. Depending on axios version, target scheme, and proxy behavior, this can expose request URLs, headers, and bodies or allow traffic modification.

For direct resolveConfig or browser-adapter helper usage, inherited paramsSerializer can be invoked with request params, allowing attacker-controlled URL serialization. This was not reproduced through normal high-level axios calls on 1.15.2+.

Affected Functionality

Affected normal API:

  • axios.get(url[, config])
  • axios.delete(url[, config])
  • axios.head(url[, config])
  • axios.options(url[, config])

Affected low-level usage:

  • Direct calls to axios/lib/adapters/http.js or axios/unsafe/adapters/http.js with plain configs and no own proxy.
  • Direct calls to axios/unsafe/helpers/resolveConfig.js or direct browser adapter/helper paths with plain configs and no own paramsSerializer.

Unaffected or corrected scope:

  • Normal axios.get() calls on 1.15.2+ did not reproduce the proxy or paramsSerializer gadgets because mergeConfig() returns a null-prototype config and uses own-property reads.

Technical Details

lib/core/Axios.js constructs aliases for bodyless methods and copies data with (config || {}).data before config normalization. If Object.prototype.data is polluted, this inherited value becomes an own data property in the merged request config and is sent by the adapter.

lib/core/mergeConfig.js in 1.15.2+ returns a null-prototype config and uses hasOwnProp guards, which prevents normal high-level requests from inheriting polluted proxy and paramsSerializer values after merge. This is why those two reporter claims do not reproduce through normal axios.get() on 1.15.2 or 1.16.1.

The low-level adapter/helper paths can still receive plain configs directly. In that usage, direct reads of config.proxy in the Node HTTP adapter and config.paramsSerializer in affected resolveConfig() versions can consume inherited polluted values.

Proof of Concept of Attack

import http from 'http';
import axios from 'axios';

const server = http.createServer((req, res) => {
  let body = '';

  req.on('data', chunk => {
    body += chunk;
  });

  req.on('end', () => {
    res.writeHead(200, {'content-type': 'application/json'});
    res.end(JSON.stringify({body, headers: req.headers}));
  });
});

await new Promise(resolve => server.listen(0, '127.0.0.1', resolve));

Object.prototype.data = 'INJECTED';

try {
  const res = await axios.get(`http://127.0.0.1:${server.address().port}/data`);

  console.log(res.data.body); // "INJECTED"
  console.log(res.data.headers['content-length']); // "8"
} finally {
  delete Object.prototype.data;
  await new Promise(resolve => server.close(resolve));
}

Expected result: a request body is sent even though the caller did not explicitly…

Record
GHSA-mmx7-hfxf-jppx
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
Weakness
CWE-1321
Updated
2026-11-02
OSVRHSA-2026:49714 7.5

Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update

Record
RHSA-2026:49714
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVRHSA-2026:50826 8.6

Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update

Record
RHSA-2026:50826
CVSS 3.1
8.6 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:N/A:N
Updated
2026-11-02
OSVUBUNTU-CVE-2026-67316 6.3

axios is vulnerable to read-side prototype-pollution gadgets that can alter request construction when Object.prototype has already been polluted by a separate vulnerability or dependency. In the bodyless method aliases (axios.get(), axios.delete(), axios.head(), axios.options()), inherited data is read via (config || {}).data before config normalization, causing an attacker-controlled body to be sent on requests that did not set one. Additional low-level paths, only reachable when calling exported adapters/helpers (e.g. lib/adapters/http.js, unsafe/helpers/resolveConfig.js) directly with plain configs and no own proxy or paramsSerializer, can inherit polluted proxy values (routing requests through an attacker-controlled proxy) or paramsSerializer values (attacker-controlled URL serialization). These low-level gadgets do not reproduce through normal high-level axios calls on 1.15.2+. The issue is fixed in axios 1.18.0 and 0.33.0.

Record
UBUNTU-CVE-2026-67316
CVSS 4.0
6.3 MediumCVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N
CVSS 3.1
7.4 HighCVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:H/I:H/A:N
Updated
2026-11-02
OSVCLSA-2026-1784856426 No score

TuxCare security update for axios (2 CVEs)

TuxCare rebuilt axios to address 2 CVEs. Fixed in 1.7.9-tuxcare.2.

Record
CLSA-2026-1784856426
Updated
2026-11-02
OSVCLSA-2026-1784943218 No score

TuxCare security update for axios (1 CVE)

TuxCare rebuilt axios to address 1 CVE. Fixed in 1.7.7-tuxcare.5.

Record
CLSA-2026-1784943218
Updated
2026-11-02
OSVCLSA-2026-1784943302 No score

TuxCare security update for axios (1 CVE)

TuxCare rebuilt axios to address 1 CVE. Fixed in 1.7.5-tuxcare.4.

Record
CLSA-2026-1784943302
Updated
2026-11-02
OSVCLSA-2026-1784943417 No score

TuxCare security update for axios (1 CVE)

TuxCare rebuilt axios to address 1 CVE. Fixed in 1.6.8-tuxcare.3.

Record
CLSA-2026-1784943417
Updated
2026-11-02
OSVCLSA-2026-1785117469 No score

TuxCare security update for axios (1 CVE)

TuxCare rebuilt axios to address 1 CVE. Fixed in 1.6.2-tuxcare.3.

Record
CLSA-2026-1785117469
Updated
2026-11-02
OSVCLSA-2026-1785468080 No score

TuxCare security update for axios (15 CVEs)

TuxCare rebuilt axios to address 15 CVEs. Fixed in 0.26.0-tuxcare.4.

Record
CLSA-2026-1785468080
Updated
2026-11-02
OSVCLSA-2026-1787930147 No score

TuxCare security update for axios (6 CVEs)

TuxCare rebuilt axios to address 6 CVEs. Fixed in 1.6.2-tuxcare.5.

Record
CLSA-2026-1787930147
Updated
2026-11-02
OSVCLSA-2026-1787930357 No score

TuxCare security update for axios (13 CVEs)

TuxCare rebuilt axios to address 13 CVEs. Fixed in 0.27.2-tuxcare.5.

Record
CLSA-2026-1787930357
Updated
2026-11-02
OSVCLSA-2026-1788195644 No score

TuxCare security update for axios (5 CVEs)

TuxCare rebuilt axios to address 5 CVEs. Fixed in 1.7.9-tuxcare.4.

Record
CLSA-2026-1788195644
Updated
2026-11-02
OSVCLSA-2026-1790115018 No score

TuxCare security update for axios (4 CVEs)

TuxCare rebuilt axios to address 4 CVEs. Fixed in 0.26.1-tuxcare.5.

Record
CLSA-2026-1790115018
Updated
2026-11-02
OSVCLSA-2026-1790764333 No score

TuxCare security update for axios (28 CVEs)

TuxCare rebuilt axios to address 28 CVEs. Fixed in 1.13.5-tuxcare.1.

Record
CLSA-2026-1790764333
Updated
2026-11-02
OSVCLSA-2026-1790767846 No score

TuxCare security update for axios (10 CVEs)

TuxCare rebuilt axios to address 10 CVEs. Fixed in 1.16.0-tuxcare.1.

Record
CLSA-2026-1790767846
Updated
2026-11-02
OSVCLSA-2026-1792139363 No score

TuxCare security update for axios (9 CVEs)

TuxCare rebuilt axios to address 9 CVEs. Fixed in 1.17.0-tuxcare.2.

Record
CLSA-2026-1792139363
Updated
2026-11-02
OSVCLSA-2026-1792476444 No score

TuxCare security update for axios (10 CVEs)

TuxCare rebuilt axios to address 10 CVEs. Fixed in 1.16.1-tuxcare.2.

Record
CLSA-2026-1792476444
Updated
2026-11-02
OSVCLSA-2026-1793101806 No score

TuxCare security update for axios (6 CVEs)

TuxCare rebuilt axios to address 6 CVEs. Fixed in 0.18.0-tuxcare.2.

Record
CLSA-2026-1793101806
Updated
2026-11-06
OSVCLSA-2026-1793101832 No score

TuxCare security update for axios (11 CVEs)

TuxCare rebuilt axios to address 11 CVEs. Fixed in 0.21.2-tuxcare.2.

Record
CLSA-2026-1793101832
Updated
2026-11-06
OSVCLSA-2026-1793101849 No score

TuxCare security update for axios (32 CVEs)

TuxCare rebuilt axios to address 32 CVEs. Fixed in 1.13.2-tuxcare.2.

Record
CLSA-2026-1793101849
Updated
2026-11-02
OSVCLSA-2026-1793110604 No score

TuxCare security update for axios (32 CVEs)

TuxCare rebuilt axios to address 32 CVEs. Fixed in 1.12.2-tuxcare.1.

Record
CLSA-2026-1793110604
Updated
2026-11-02
OSVCLSA-2026-1793874599 No score

TuxCare security update for axios (27 CVEs)

TuxCare rebuilt axios to address 27 CVEs. Fixed in 1.13.6-tuxcare.3.

Record
CLSA-2026-1793874599
Updated
2026-11-05
OSVROOT-APP-NPM-CVE-2026-67316 No score

CVE-2026-67316 in axios - Patched by Root

Root has patched CVE-2026-67316 in the axios package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-67316
Updated
2026-11-02
OSVROOT-APP-NPM-GHSA-7q8q-rj6j-mhjq No score

GHSA-7q8q-rj6j-mhjq in axios - Patched by Root

Root has patched GHSA-7q8q-rj6j-mhjq in the axios package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-GHSA-7q8q-rj6j-mhjq
Updated
2026-11-06
OSVROOT-APP-NPM-GHSA-mmx7-hfxf-jppx No score

GHSA-mmx7-hfxf-jppx in axios - Patched by Root

Root has patched GHSA-mmx7-hfxf-jppx in the axios package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-GHSA-mmx7-hfxf-jppx
Updated
2026-11-06

Affected products

Affected packages

Affected packages
PackageAffectedFixed
axios
npm
0.8.0 up to 0.33.0
0.33.0
axios
npm
1.0.0 up to 1.18.0
1.18.0
axios
npm
before 0.33.0
0.33.0
axios
TuxCare:npm
1.7.9-tuxcare.0 up to 1.7.9-tuxcare.2, plus listed versions
1.7.91.7.9-tuxcare.1
1.7.9-tuxcare.2
axios
TuxCare:npm
1.7.7-tuxcare.0 up to 1.7.7-tuxcare.5, plus listed versions
1.7.71.7.7-tuxcare.11.7.7-tuxcare.21.7.7-tuxcare.31.7.7-tuxcare.4
1.7.7-tuxcare.5
axios
TuxCare:npm
1.7.5-tuxcare.0 up to 1.7.5-tuxcare.4, plus listed versions
1.7.51.7.5-tuxcare.11.7.5-tuxcare.21.7.5-tuxcare.3
1.7.5-tuxcare.4
axios
TuxCare:npm
1.6.8-tuxcare.0 up to 1.6.8-tuxcare.3, plus listed versions
1.6.81.6.8-tuxcare.11.6.8-tuxcare.2
1.6.8-tuxcare.3
axios
TuxCare:npm
1.6.2-tuxcare.0 up to 1.6.2-tuxcare.3, plus listed versions
1.6.21.6.2-tuxcare.11.6.2-tuxcare.2
1.6.2-tuxcare.3
axios
TuxCare:npm
From an advisory covering 14 CVEs
0.26.0-tuxcare.0 up to 0.26.0-tuxcare.4, plus listed versions
0.26.00.26.0-tuxcare.10.26.0-tuxcare.20.26.0-tuxcare.3
0.26.0-tuxcare.4
axios
TuxCare:npm
From an advisory covering 6 CVEs
1.6.2-tuxcare.0 up to 1.6.2-tuxcare.5, plus listed versions
1.6.21.6.2-tuxcare.11.6.2-tuxcare.21.6.2-tuxcare.31.6.2-tuxcare.4
1.6.2-tuxcare.5
Show 25 moreShow less
Affected packages
PackageAffectedFixed
axios
TuxCare:npm
From an advisory covering 13 CVEs
0.27.2-tuxcare.0 up to 0.27.2-tuxcare.5, plus listed versions
0.27.20.27.2-tuxcare.10.27.2-tuxcare.20.27.2-tuxcare.30.27.2-tuxcare.4
0.27.2-tuxcare.5
axios
TuxCare:npm
From an advisory covering 5 CVEs
1.7.9-tuxcare.0 up to 1.7.9-tuxcare.4, plus listed versions
1.7.91.7.9-tuxcare.11.7.9-tuxcare.21.7.9-tuxcare.3
1.7.9-tuxcare.4
axios
TuxCare:npm
From an advisory covering 4 CVEs
0.26.1-tuxcare.0 up to 0.26.1-tuxcare.5, plus listed versions
0.26.10.26.1-tuxcare.10.26.1-tuxcare.20.26.1-tuxcare.30.26.1-tuxcare.4
0.26.1-tuxcare.5
axios
TuxCare:npm
From an advisory covering 28 CVEs
1.13.5-tuxcare.0 up to 1.13.5-tuxcare.1, plus listed versions
1.13.5
1.13.5-tuxcare.1
axios
TuxCare:npm
From an advisory covering 10 CVEs
1.16.0-tuxcare.0 up to 1.16.0-tuxcare.1, plus listed versions
1.16.0
1.16.0-tuxcare.1
axios
TuxCare:npm
From an advisory covering 9 CVEs
1.17.0-tuxcare.0 up to 1.17.0-tuxcare.2, plus listed versions
1.17.01.17.0-tuxcare.1
1.17.0-tuxcare.2
axios
TuxCare:npm
From an advisory covering 10 CVEs
1.16.1-tuxcare.0 up to 1.16.1-tuxcare.2, plus listed versions
1.16.11.16.1-tuxcare.1
1.16.1-tuxcare.2
axios
TuxCare:npm
From an advisory covering 6 CVEs
0.18.0-tuxcare.0 up to 0.18.0-tuxcare.2, plus listed versions
0.18.00.18.0-tuxcare.1
0.18.0-tuxcare.2
axios
TuxCare:npm
From an advisory covering 11 CVEs
0.21.2-tuxcare.0 up to 0.21.2-tuxcare.2, plus listed versions
0.21.20.21.2-tuxcare.1
0.21.2-tuxcare.2
axios
TuxCare:npm
From an advisory covering 32 CVEs
1.13.2-tuxcare.0 up to 1.13.2-tuxcare.2, plus listed versions
1.13.21.13.2-tuxcare.1
1.13.2-tuxcare.2
axios
TuxCare:npm
From an advisory covering 32 CVEs
1.12.2-tuxcare.0 up to 1.12.2-tuxcare.1, plus listed versions
1.12.2
1.12.2-tuxcare.1
axios
TuxCare:npm
From an advisory covering 27 CVEs
1.13.6-tuxcare.0 up to 1.13.6-tuxcare.3, plus listed versions
1.13.61.13.6-tuxcare.11.13.6-tuxcare.2
1.13.6-tuxcare.3
node-axios
Debian:12
All versions, plus listed versions
1.11.0+dfsg-11.12.1+dfsg-11.13.1+dfsg-11.13.2+dfsg-11.14.0+dfsg-1
Show 17 moreShow less
1.15.0-11.15.2-11.16.0-11.18.0-11.19.0-11.2.1+dfsg-11.2.1+dfsg-1+deb12u11.20.0-11.5.1+dfsg-11.6.2+dfsg-11.6.8+dfsg-11.6.8+dfsg-21.7.3+dfsg-11.7.4+dfsg-11.7.7+dfsg-11.7.9+dfsg-11.8.4+dfsg-1
None known
node-axios
Debian:13
All versions, plus listed versions
1.11.0+dfsg-11.12.1+dfsg-11.13.1+dfsg-11.13.2+dfsg-11.14.0+dfsg-1
Show 7 moreShow less
1.15.0-11.15.2-11.16.0-11.18.0-11.19.0-11.20.0-11.8.4+dfsg-1
None known
node-axios
Debian:14
before 1.18.0-1, plus listed versions
1.11.0+dfsg-11.12.1+dfsg-11.13.1+dfsg-11.13.2+dfsg-11.14.0+dfsg-1
Show 4 moreShow less
1.15.0-11.15.2-11.16.0-11.8.4+dfsg-1
1.18.0-1
grafana13.1
Red Hat:hummingbird:1
From an advisory covering 6 CVEs
before 0:13.1.1-0.5.hum1
0:13.1.1-0.5.hum1
grafana13.1
Red Hat:hummingbird:1
From an advisory covering 10 CVEs
before 0:13.1.1-0.5.2.hum1
0:13.1.1-0.5.2.hum1
axios
Root:npm
before 1.18.0-aikido.1
1.18.0-aikido.1
@rootio/axios
Root:npm
before 1.18.0-root.io.1
1.18.0-root.io.1
axios
Root:npm
before 1.16.0-aikido.3
1.16.0-aikido.31.17.0-aikido.31.15.2-aikido.51.16.1-aikido.41.13.4-aikido.81.15.0-aikido.131.13.2-aikido.111.17.0-aikido.21.12.0-aikido.121.13.6-aikido.61.7.9-aikido.111.8.4-aikido.111.13.5-aikido.141.15.2-aikido.41.16.0-aikido.21.16.1-aikido.31.8.3-aikido.91.14.0-aikido.110.31.1-aikido.31.2.1-aikido.51.16.1-aikido.51.15.0-aikido.141.7.9-aikido.121.13.2-aikido.121.8.4-aikido.121.7.9-aikido.131.6.5-aikido.31.7.4-aikido.5
@rootio/axios
Root:npm
before 1.16.0-root.io.3
1.16.0-root.io.31.17.0-root.io.31.15.2-root.io.51.16.1-root.io.41.13.4-root.io.81.15.0-root.io.131.13.2-root.io.111.17.0-root.io.21.12.0-root.io.121.13.6-root.io.61.7.9-root.io.111.8.4-root.io.111.13.5-root.io.141.15.2-root.io.41.16.0-root.io.21.16.1-root.io.31.8.3-root.io.91.14.0-root.io.110.31.1-root.io.31.2.1-root.io.51.16.1-root.io.51.15.0-root.io.141.7.9-root.io.121.13.2-root.io.121.8.4-root.io.121.7.9-root.io.131.6.5-root.io.31.7.4-root.io.5
node-axios
Ubuntu:Pro:20.04:LTS
All versions, plus listed versions
0.19.0+dfsg-20.19.0+dfsg-2ubuntu0.1~esm1
None known
node-axios
Ubuntu:Pro:22.04:LTS
All versions, plus listed versions
0.21.1+dfsg-10.23.0+dfsg-20.24.0+dfsg-10.25.0+dfsg-20.26.0+dfsg-10.26.0+dfsg-1ubuntu0.1~esm1
None known
node-axios
Ubuntu:Pro:24.04:LTS
All versions, plus listed versions
1.2.1+dfsg-11.5.1+dfsg-11.6.2+dfsg-11.6.8+dfsg-21.6.8+dfsg-2ubuntu0.1~esm1
None known
node-axios
Ubuntu:Pro:26.04:LTS
All versions, plus listed versions
1.11.0+dfsg-11.12.1+dfsg-11.13.2+dfsg-1build11.13.2+dfsg-1ubuntu0.1~esm1
None known

History

History
RecordedChangedSources
affectedOSV
affectedOSV
affectedOSV
affected, aliases, factsOSV
affected
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-67316 is a medium vulnerability (CVSS 6.3) in Axios, published July 20, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.42%, the 36th percentile. Fixed in axios 0.33.0.

References

Show 80 moreShow less
This page doesn't list everything

Left out here: the rest of 4 source descriptions. The JSON record has them.

MoveEnter Open