CVE-2026-25639
High · 7.5CVSS
7.5
EPSS
2.0%
Published
Feb 9, 2026
CISA due date
—
Cloudanix analysis
A flaw in a common web request library can let someone crash affected applications by sending specially crafted input.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Denial of service
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
Axios versions prior to 0.30.3 and 1.13.5 can throw an unhandled TypeError in mergeConfig when a configuration object contains __proto__ as its own property, such as an object produced by JSON.parse(). If an application passes attacker-influenced JSON or request-derived data into axios configuration merging, the process or request handler can crash, causing denial of service. The issue does not directly provide confidentiality or integrity impact, code execution, or privilege escalation; the primary impact is availability loss.
Why it matters to the business
Applications that use vulnerable axios versions may become unavailable if they accept or construct axios request configuration from untrusted input. For Node.js services, a crash can interrupt API processing, background jobs, integrations, webhooks, or service-to-service calls that depend on axios. Browser applications may experience client-side failures or broken workflows. Although this is not listed in CISA KEV and no mature public exploitation is indicated, the CVSS availability impact is high and axios is a widely used HTTP client, so exposed services should be patched during normal-to-expedited dependency maintenance, especially where user-supplied JSON influences outbound request options.
How an attack unfolds
An attacker first identifies an application path where user-controlled data is parsed as JSON and then merged into or used as an axios request configuration object. They submit JSON containing an own __proto__ property. When the vulnerable application passes that object into axios and axios calls mergeConfig, axios mishandles the __proto__ property and throws a TypeError. If the application does not catch the exception or isolate the failing request, the request handler, worker, or Node.js process can terminate or enter a failure loop. Repeated requests can sustain service disruption until the vulnerable code path is patched, input is sanitized, or process supervision restores the service.
How to fix it
Upgrade axios to a fixed release: 0.30.3 or later on the 0.x line, or 1.13.5 or later on the 1.x line. For source-based consumers, include axios commit 29f75425f0c9f73021f5eedc869c176e30e05fe7 or a later commit containing the fix. Regenerate lockfiles and rebuild deployable artifacts so transitive and bundled copies are also updated. If immediate upgrade is not possible, prevent untrusted objects from being used as axios configuration; explicitly allowlist supported configuration keys, reject or remove __proto__, constructor, and prototype properties from parsed input, and wrap axios calls in exception handling so a single malformed request cannot crash the process. Use process supervision and rate limiting as compensating controls, but do not treat them as substitutes for upgrading.
How to confirm the fix worked
Confirm dependency inventories, package manifests, and lockfiles show axios 0.30.3 or later, 1.13.5 or later, or a source revision at or after commit 29f75425f0c9f73021f5eedc869c176e30e05fe7. Check both direct and transitive dependencies using package manager tooling such as npm ls axios, yarn why axios, pnpm why axios, or software composition analysis. Validate deployed artifacts rather than only source repositories, because bundled JavaScript or container images may retain an older axios copy. In a non-production test environment, exercise any endpoint that maps JSON into axios options with a benign payload containing an own __proto__ property and confirm the application rejects/sanitizes it or handles it without an uncaught TypeError or process restart.
Typical attack path
- Find an application endpoint, webhook, job processor, or API feature that accepts JSON input and uses it to influence axios request configuration.
- Send a crafted JSON payload containing an own __proto__ property.
- Trigger application logic that parses the payload with JSON.parse() or equivalent and passes the resulting object into axios configuration merging.
- Cause axios mergeConfig to throw a TypeError.
- Repeat requests or trigger retries to keep the affected service, worker, or workflow unavailable.
How to detect it
Look for evidence of denial-of-service attempts or crashes associated with axios configuration merging. Useful log sources include application error logs, Node.js uncaught exception logs, process manager logs, container stdout/stderr, Kubernetes pod restart events, serverless invocation errors, API gateway or WAF logs, and HTTP request logs with captured bodies or parameter names. Search for TypeError stack traces referencing axios mergeConfig, repeated process restarts shortly after requests containing __proto__, and spikes in 5xx responses, worker exits, pod CrashLoopBackOff states, or failed jobs. If request bodies are logged or retained in WAF/API security telemetry, search for JSON keys named __proto__, especially near routes that trigger outbound HTTP calls. Because the vulnerability is a crash condition rather than persistence or code execution, durable host artifacts are unlikely; detection relies primarily on correlating malicious payloads with application exceptions and availability events.
- __proto__
- "__proto__"
- TypeError
- mergeConfig
- axios/lib/core/mergeConfig
- node_modules/axios/lib/core/mergeConfig
- node_modules/axios/dist
- uncaughtException
- UnhandledPromiseRejection
- CrashLoopBackOff
- npm ls axios
- axios@0.30.2
- axios@1.13.4
What your security team should do
- Inventory all applications, containers, serverless functions, front-end bundles, and build artifacts that include axios.
- Prioritize patching internet-facing Node.js services and webhook/API processors where user-supplied JSON can influence outbound HTTP request configuration.
- Upgrade axios to 0.30.3, 1.13.5, or later and redeploy rebuilt artifacts with refreshed lockfiles.
- Add input validation or configuration allowlisting so untrusted request bodies cannot be passed directly into axios configuration objects.
- Search logs for TypeError crashes around axios mergeConfig and correlate them with requests containing __proto__ in JSON bodies or parameters.
- Ensure Node.js services have centralized error handling, worker isolation, and process supervision to reduce the blast radius of malformed input.
- Add dependency scanning rules to prevent reintroduction of axios versions older than 0.30.3 or 1.13.5.
The record
Axios is a promise based HTTP client for the browser and Node.js. Prior to versions 0.30.3 and 1.13.5, 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. This vulnerability is fixed in versions 0.30.3 and 1.13.5.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | axios | 0 | 0.30.3 |
| npm | axios | 1.0.0 | 1.13.5 |
| Chainguard | jitsucom-jitsu-console | 0 | 2.11.0-r15 |
| Chainguard | kibana-8.17 | 0 | 8.17.10-r10 |
| Chainguard | kibana-8.17-iamguarded | 0 | 8.17.10-r10 |
| Chainguard | kibana-8.18 | 0 | 8.18.8-r10 |
| Chainguard | kibana-8.18-iamguarded | 0 | 8.18.8-r10 |
| Chainguard | kibana-8.19 | 0 | 8.19.11-r1 |
| Chainguard | kibana-8.19-bitnami | 0 | 8.19.11-r1 |
| Chainguard | kibana-8.19-iamguarded | 0 | 8.19.11-r1 |
| Chainguard | kibana-9.0 | 0 | 9.0.8-r10 |
| Chainguard | kibana-9.0-bitnami | 0 | 9.0.8-r10 |
| Chainguard | kibana-9.0-iamguarded | 0 | 9.0.8-r10 |
| Chainguard | kibana-9.1 | 0 | 9.1.10-r5 |
| Chainguard | kibana-9.1-iamguarded | 0 | 9.1.10-r5 |
| Chainguard | kibana-9.2 | 0 | 9.2.5-r3 |
| Chainguard | kibana-9.2-iamguarded | 0 | 9.2.5-r3 |
| Chainguard | kibana-9.3 | 0 | 9.3.0-r1 |
| Chainguard | kibana-9.3-iamguarded | 0 | 9.3.0-r1 |
| Chainguard | kubeflow-centraldashboard | 0 | 1.10.0-r11 |
| Chainguard | langfuse-3-worker | 0 | 3.153.0-r2 |
| Chainguard | langfuse-fips-2 | 0 | 2.95.12-r9 |
| Chainguard | langfuse-fips-2-worker | 0 | 2.95.12-r9 |
| Chainguard | langfuse-fips-3-worker | 0 | 3.153.0-r1 |
| Chainguard | lerna | 0 | 9.0.4-r2 |
| Chainguard | librechat | 0 | 0.8.2-r2 |
| Chainguard | opensearch-dashboards-2 | 0 | 2.19.4-r9 |
| Chainguard | opensearch-dashboards-2-fips | 0 | 2.19.4-r9 |
| Chainguard | opensearch-dashboards-3 | 0 | 3.4.0-r3 |
| Chainguard | opensearch-dashboards-3-fips | 0 | 3.4.0-r4 |
| Chainguard | prism | 0 | 5.14.3-r6 |
| Chainguard | redisinsight | 0 | 3.0.2-r2 |
| Wolfi | jitsucom-jitsu-console | 0 | 2.11.0-r15 |
| Wolfi | kubeflow-centraldashboard | 0 | 1.10.0-r11 |
| Wolfi | langfuse-3-worker | 0 | 3.153.0-r2 |
| Wolfi | lerna | 0 | 9.0.4-r2 |
| Wolfi | opensearch-dashboards-2 | 0 | 2.19.4-r9 |
| Wolfi | opensearch-dashboards-3 | 0 | 3.4.0-r3 |
| Wolfi | prism | 0 | 5.14.3-r6 |
Related vulnerabilities
- GHSA-43fc-jf86-j433 Axios is Vulnerable to Denial of Service via __proto__ Key in mergeConfig Same vulnerability
- CVE-2026-44496 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44490 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44492 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44494 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44495 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44486 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios
- CVE-2026-44487 Axios is a promise based HTTP client for the browser and Node.js. Also affects axios