CVE-2026-67316
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.
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
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 Medium
CVSS: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 Medium
CVSS: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 affectedparamsSerializerobject.
Affected config shapes:
auth: {}or anauthobject missing ownusernameand/orpassword.paramsSerializer: {}or aparamsSerializerobject missing ownencodeand/orserialize.
Unaffected by this specific issue:
- Requests with no
authproperty. - Requests with no
paramsSerializerproperty. - Top-level polluted
authorparamsSerializervalues 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 Medium
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 - 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 Medium
CVSS: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.jsoraxios/unsafe/adapters/http.jswith plain configs and no ownproxy. - Direct calls to
axios/unsafe/helpers/resolveConfig.jsor direct browser adapter/helper paths with plain configs and no ownparamsSerializer.
Unaffected or corrected scope:
- Normal
axios.get()calls on1.15.2+did not reproduce theproxyorparamsSerializergadgets becausemergeConfig()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 Medium
CVSS: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 Medium
CVSS: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 High
CVSS: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 Medium
CVSS: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 High
CVSS: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 affectedparamsSerializerobject.
Affected config shapes:
auth: {}or anauthobject missing ownusernameand/orpassword.paramsSerializer: {}or aparamsSerializerobject missing ownencodeand/orserialize.
Unaffected by this specific issue:
- Requests with no
authproperty. - Requests with no
paramsSerializerproperty. - Top-level polluted
authorparamsSerializervalues 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 Medium
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 - 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 Medium
CVSS: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.jsoraxios/unsafe/adapters/http.jswith plain configs and no ownproxy. - Direct calls to
axios/unsafe/helpers/resolveConfig.jsor direct browser adapter/helper paths with plain configs and no ownparamsSerializer.
Unaffected or corrected scope:
- Normal
axios.get()calls on1.15.2+did not reproduce theproxyorparamsSerializergadgets becausemergeConfig()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 Medium
CVSS: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 High
CVSS: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 High
CVSS: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 Medium
CVSS: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 High
CVSS: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
| Package | Affected | Fixed |
|---|---|---|
axiosnpm |
0.8.0 up to 0.33.0 | 0.33.0 |
axiosnpm |
1.0.0 up to 1.18.0 | 1.18.0 |
axiosnpm |
before 0.33.0 | 0.33.0 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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
| Package | Affected | Fixed |
|---|---|---|
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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 |
axiosTuxCare: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-axiosDebian: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 less1.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-axiosDebian: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 less1.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-axiosDebian: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 less1.15.0-11.15.2-11.16.0-11.8.4+dfsg-1 |
1.18.0-1 |
grafana13.1Red 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.1Red 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 |
axiosRoot:npm |
before 1.18.0-aikido.1 | 1.18.0-aikido.1 |
@rootio/axiosRoot:npm |
before 1.18.0-root.io.1 | 1.18.0-root.io.1 |
axiosRoot: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/axiosRoot: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-axiosUbuntu:Pro:20.04:LTS |
All versions, plus listed versions 0.19.0+dfsg-20.19.0+dfsg-2ubuntu0.1~esm1 |
None known |
node-axiosUbuntu: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-axiosUbuntu: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-axiosUbuntu: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
| Recorded | Changed | Sources |
|---|---|---|
| affected | OSV | |
| affected | OSV | |
| affected | OSV | |
| affected, aliases, facts | OSV | |
| affected | ||
| first indexed | CVE 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
github.com/axios/axios/security/advisories/GHSA-mmx7-hfxf-jppx
vulncheck.com/advisories/axios-before-prototype-pollution-via-bodyless-methods
github.com/axios/axios/security/advisories/GHSA-7q8q-rj6j-mhjq
github.com/axios/axios/pull/11000
github.com/axios/axios/pull/11001
github.com/axios/axios/commit/1417285c69344bbcc6420a021f67dee0c6fedb2d
Show 80 moreShow less
github.com/axios/axios/commit/32fc489632377d214db55bfa4e2c48486a7d7ce2
github.com/axios/axios/releases/tag/v0.33.0
github.com/axios/axios/releases/tag/v1.18.0
nvd.nist.gov/vuln/detail/CVE-2026-67319
nvd.nist.gov/vuln/detail/CVE-2026-69123
vulncheck.com/advisories/axios-before-prototype-pollution-via-nested-option-objects
github.com/advisories/GHSA-7q8q-rj6j-mhjq
nvd.nist.gov/vuln/detail/CVE-2026-67316
github.com/advisories/GHSA-f2r5-pqh9-r8f8
nvd.nist.gov/vuln/detail/CVE-2026-68944
github.com/advisories/GHSA-mmx7-hfxf-jppx
github.com/CVEProject/cvelistV5/tree/main/cves/2026/67xxx/CVE-2026-67316.json
security-tracker.debian.org/tracker/CVE-2026-67316
github.com/axios/axios
access.redhat.com/errata/RHSA-2026:49714
access.redhat.com/security/cve/CVE-2026-67313
access.redhat.com/security/cve/CVE-2026-67314
access.redhat.com/security/cve/CVE-2026-67315
access.redhat.com/security/cve/CVE-2026-67316
access.redhat.com/security/cve/CVE-2026-67317
access.redhat.com/security/cve/CVE-2026-67318
access.redhat.com/security/updates/classification
images.redhat.com
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_49714.json
cve.org/CVERecord?id=CVE-2026-67313
bugzilla.redhat.com/show_bug.cgi?id=2510030
cve.org/CVERecord?id=CVE-2026-67314
nvd.nist.gov/vuln/detail/CVE-2026-67314
github.com/axios/axios/security/advisories/GHSA-xj6q-8x83-jv6g
vulncheck.com/advisories/axios-before-prototype-pollution-via-auth-subfields
bugzilla.redhat.com/show_bug.cgi?id=2510019
cve.org/CVERecord?id=CVE-2026-67315
nvd.nist.gov/vuln/detail/CVE-2026-67315
github.com/axios/axios/security/advisories/GHSA-f4gw-2p7v-4548
vulncheck.com/advisories/axios-before-no-proxy-bypass-via
bugzilla.redhat.com/show_bug.cgi?id=2510009
cve.org/CVERecord?id=CVE-2026-67316
bugzilla.redhat.com/show_bug.cgi?id=2510031
cve.org/CVERecord?id=CVE-2026-67317
nvd.nist.gov/vuln/detail/CVE-2026-67317
github.com/axios/axios/security/advisories/GHSA-jqh4-m9w3-8hp9
vulncheck.com/advisories/axios-before-maxbodylength-bypass-via-readablestream
bugzilla.redhat.com/show_bug.cgi?id=2509989
cve.org/CVERecord?id=CVE-2026-67318
nvd.nist.gov/vuln/detail/CVE-2026-67318
github.com/axios/axios/security/advisories/GHSA-mwf2-3pr3-8698
vulncheck.com/advisories/axios-before-maxbodylength-bypass-via-http-2
access.redhat.com/errata/RHSA-2026:50826
access.redhat.com/security/cve/CVE-2026-69152
access.redhat.com/security/cve/CVE-2026-69153
access.redhat.com/security/cve/CVE-2026-69192
access.redhat.com/security/cve/CVE-2026-69198
security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_50826.json
bugzilla.redhat.com/show_bug.cgi?id=2510722
cve.org/CVERecord?id=CVE-2026-69152
nvd.nist.gov/vuln/detail/CVE-2026-69152
github.com/juliangruber/brace-expansion/commit/139d015104e71433ad52a41d19467c48ecbb2c7d
github.com/juliangruber/brace-expansion/commit/1e30c930238d7162802d88a94189182def178dac
github.com/juliangruber/brace-expansion/commit/688a99eeaab02627c2b89ba8ba4821fecfa659cf
github.com/juliangruber/brace-expansion/commit/cb4b9e47cc2ec777c14b2b4492fb431a56f6a031
github.com/juliangruber/brace-expansion/security/advisories/GHSA-rgw5-rvv9-x895
bugzilla.redhat.com/show_bug.cgi?id=2510719
cve.org/CVERecord?id=CVE-2026-69153
nvd.nist.gov/vuln/detail/CVE-2026-69153
github.com/postcss/postcss/commit/7beca139e70f9075c6b19700fcb00dd8033e5da8
github.com/postcss/postcss/releases/tag/8.5.19
github.com/postcss/postcss/security/advisories/GHSA-fxqj-rqcc-2cmp
bugzilla.redhat.com/show_bug.cgi?id=2510801
cve.org/CVERecord?id=CVE-2026-69192
nvd.nist.gov/vuln/detail/CVE-2026-69192
github.com/beaugunderson/ip-address/commit/56368cb3d66c73ba0ee9b6b834fd31b22c2fd71e
github.com/beaugunderson/ip-address/releases/tag/v10.3.1
github.com/beaugunderson/ip-address/security/advisories/GHSA-mwp4-54f8-5fhr
bugzilla.redhat.com/show_bug.cgi?id=2510803
cve.org/CVERecord?id=CVE-2026-69198
nvd.nist.gov/vuln/detail/CVE-2026-69198
github.com/beaugunderson/ip-address/commit/488fe9bc7c35363b4b090494fc38c266d217740d
github.com/beaugunderson/ip-address/releases/tag/v10.2.2
github.com/beaugunderson/ip-address/security/advisories/GHSA-4xrf-jv44-h6hh
ubuntu.com/security/CVE-2026-67316
Left out here: the rest of 4 source descriptions. The JSON record has them.