NIST deprecates RSA-2048 from 2030. Find every one of them before attackers do.
📦
📦 npm
Not in CISA KEV
HIGH severity

Axios is Vulnerable to Denial of Service via __proto__ Key in mergeConfigGHSA-43fc-jf86-j433

HIGHFix: axios/axios#7369

GHSA-43fc-jf86-j433 is a high-severity (CVSS 7.5) CWE-754 vulnerability in axios. A fix is available for axios — see the affected versions and patch details below.

Also known asCVE-2026-25639
Published
Updated
Affected
2 pkgs
Patched
2 / 2
Exploits
None indexed
Exploitation data as of Nov 10, 2026 · OSV.dev, NVD, FIRST.org (EPSS)

Exploitation Status

No confirmed exploitation observed yet

  • CISA assesses this as automatable — exploitation doesn’t require manual, per-target effort, which raises the odds of mass scanning and opportunistic attacks.
  • CISA’s own triage has not observed active exploitation or public proof-of-concept code for this CVE as of its last assessment.

Exploitation and automatability from CISA’s SSVC triage for GHSA-43fc-jf86-j433.

EPSS Exploitation Probability

via FIRST.org ↗
2.8%probability of exploitation in next 30 days
Lower Risk-0.04%
Lower risk than most CVEs86th percentile — riskier than 86% of all scored CVEsHighest risk
0.00%1.21%2.42%3.63%0.1%2.8%May 26Sep 26Nov 26

Probability of exploitation in the next 30 days, from FIRST.org EPSS.

How urgent is this, really

Where this sits among everything scored

Real-World Exposure

2 pkgs affected

How broadly this vulnerability is actually deployed: weekly install volume shows current usage, and reverse-dependency count shows how many other packages break if it stays unpatched.

180Kother npm packages depend on this — each one inherits the vulnerability until it's patched upstream
axiosnpm
143.5Mdownloads / week

Description

Denial of Service via proto Key in mergeConfig

Summary

The mergeConfig function in axios crashes with a TypeError when processing configuration objects containing __proto__ as an own property. An attacker can trigger this by providing a malicious configuration object created via JSON.parse(), causing complete denial of service.

Details

The vulnerability exists in lib/core/mergeConfig.js at lines 98-101:

utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) {
  const merge = mergeMap[prop] || mergeDeepProperties;
  const configValue = merge(config1[prop], config2[prop], prop);
  (utils.isUndefined(configValue) && merge !== mergeDirectKeys) || (config[prop] = configValue);
});

When prop is '__proto__':

  1. JSON.parse('{"__proto__": {...}}') creates an object with __proto__ as an own enumerable property
  2. Object.keys() includes '__proto__' in the iteration
  3. mergeMap['__proto__'] performs prototype chain lookup, returning Object.prototype (truthy object)
  4. The expression mergeMap[prop] || mergeDeepProperties evaluates to Object.prototype
  5. Object.prototype(...) throws TypeError: merge is not a function

The mergeConfig function is called by:

  • Axios._request() at lib/core/Axios.js:75
  • Axios.getUri() at lib/core/Axios.js:201
  • All HTTP method shortcuts (get, post, etc.) at lib/core/Axios.js:211,224

PoC

import axios from "axios";

const maliciousConfig = JSON.parse('{"__proto__": {"x": 1}}');
await axios.get("https://httpbin.org/get", maliciousConfig);

Reproduction steps:

  1. Clone axios repository or npm install axios
  2. Create file poc.mjs with the code above
  3. Run: node poc.mjs
  4. Observe the TypeError crash

Verified output (axios 1.13.4):

TypeError: merge is not a function
    at computeConfigValue (lib/core/mergeConfig.js:100:25)
    at Object.forEach (lib/utils.js:280:10)
    at mergeConfig (lib/core/mergeConfig.js:98:9)

Control tests performed:

TestConfigResult
Normal config{"timeout": 5000}SUCCESS
Malicious configJSON.parse('{"__proto__": {"x": 1}}')CRASH
Nested object{"headers": {"X-Test": "value"}}SUCCESS

Attack scenario: An application that accepts user input, parses it with JSON.parse(), and passes it to axios configuration will crash when receiving the payload {"__proto__": {"x": 1}}.

Impact

Denial of Service - Any application using axios that processes user-controlled JSON and passes it to axios configuration methods is vulnerable. The application will crash when processing the malicious payload.

Affected environments:

  • Node.js servers using axios for HTTP requests
  • Any backend that passes parsed JSON to axios configuration

This is NOT prototype pollution - the application crashes before any assignment occurs.

Affected Packages

2 total 2 fixed
EcosystemPackageVulnerable rangeFix
📦npmaxios≥ 1.0.0&&< 1.13.51.13.5npm install axios@1.13.5
📦npmaxiosall versions0.30.3npm install axios@0.30.3

Affected Products

1 product · 2 configurations
Application
axiosaxios
≥ 1.0.0 && < 1.13.5
range

Detection & mitigation playbook

Open-source dependency
  1. Detect

    Scan your dependency tree (package-lock.json, pnpm-lock.yaml, requirements.txt, go.sum, etc.) for axios, including transitive dependencies — a direct dependency you never call can still pull in a vulnerable version.

  2. Fix

    Update axios to 1.13.5 or later, then make sure no transitive (indirect) dependency still pins the vulnerable range — O3 confirms GHSA-43fc-jf86-j433 is resolved across your whole dependency graph.

  3. Workarounds

    Cap what an attacker can consume: apply request size, rate and timeout limits in front of the affected component, and run it with memory and CPU limits so exhaustion degrades one worker rather than the whole service.

Fixing This On Your OS

If you run this on a Linux distribution, patch through your package manager against the distro's own security advisory below — it tracks the exact backported fix for your release, which can ship on a different timeline (and sometimes a different severity) than the upstream project.

Red HatImportant

This vulnerability is rated as having an Important severity because an unauthenticated remote attacker can trigger an unhandled process crash in backend services that merge untrusted JSON input into HTTP request configurations, resulting in denial of service. While Axios is widely distributed across Red Hat products…

Workaround published by Red Hat
Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base or stability.
Source: Red Hat security advisory for GHSA-43fc-jf86-j433 (CC BY 4.0)
ProductFixed inAdvisory
Red Hat Ansible Automation Platform 2.6 for RHEL 9automation-platform-ui-0:2.6.7-1.el9apRHSA-2026:6277
multicluster engine for Kubernetes 2.10multicluster-engine/console-mce-rhel9:1777128790RHSA-2026:13542
multicluster engine for Kubernetes 2.6multicluster-engine/console-mce-rhel9:1776223790RHSA-2026:9848
multicluster engine for Kubernetes 2.7multicluster-engine/console-mce-rhel9:1773100128RHSA-2026:5636
multicluster engine for Kubernetes 2.8multicluster-engine/console-mce-rhel9:1775116156RHSA-2026:8218
multicluster engine for Kubernetes 2.9multicluster-engine/console-mce-rhel9:1777301444RHSA-2026:11414
Network Observability (NETOBSERV) 1.11.0network-observability/network-observability-console-plugin-compat-rhel9:1774431392RHSA-2026:6428
Red Hat Advanced Cluster Management for Kubernetes 2.11rhacm2/console-rhel9:1783350952RHSA-2026:41064

Frequently Asked Questions

# Denial of Service via **proto** Key in mergeConfig ### Summary The `mergeConfig` function in axios crashes with a TypeError when processing configuration objects containing `__proto__` as an own property. An attacker can trigger this by providing a malicious configuration object created via `JSON.parse()`, causing complete denial of service. ### Details The vulnerability exists in `lib/core/mergeConfig.js` at lines 98-101: ```javascript utils.forEach(Object.keys({ ...config1, ...config2 }), function computeConfigValue(prop) { const merge = mergeMap[prop] || mergeDeepProperties; cons
O3 Security · Impact-Aware SCA

Is GHSA-43fc-jf86-j433 in your dependencies?

Find it across npm, including transitive dependencies.

Axios is Vulnerable to Denial of Service via __proto__ Key…