CVE-2026-27942
High · 7.5CVSS
7.5
EPSS
0.7%
Published
Feb 26, 2026
CISA due date
—
Cloudanix analysis
A vulnerable XML utility can let someone crash affected services by sending data that the service tries to turn into XML.
- Exploitation
- Remote Unauthenticated
- Attacker needs
- None
- Complexity
- Low
- Impact
- Denial Of Service
- Component
- Library
- Class
- Buffer Overflow
- Remediation
- Upgrade
- Effort
- Medium
- Patch risk
- Low
What it actually does
In fast-xml-parser versions prior to 5.3.8, using the XML builder with the option `preserveOrder:true` can trigger uncontrolled recursive processing and exhaust the JavaScript call stack. When attacker-controlled or otherwise malformed input is passed to the builder in this mode, the Node.js process can throw a stack overflow error and crash. The primary technical impact is denial of service through application unavailability; the issue does not indicate confidentiality or integrity compromise by itself.
Why it matters to the business
Applications, APIs, workers, or integration services that build XML using vulnerable fast-xml-parser versions may be remotely crashed if they process untrusted data, causing failed transactions, interrupted data exchange, degraded service availability, and operational incidents. Although EPSS is currently low and there is no known KEV listing or mature public exploitation signal, the vulnerability is easy to trigger where exposed parsing/building paths exist and should be remediated during normal dependency patch cycles, with higher urgency for internet-facing services or message-processing pipelines.
How an attack unfolds
An attacker first identifies an application endpoint, queue consumer, webhook, file import function, or API workflow that accepts data later converted into XML using fast-xml-parser's XML builder. If the application invokes the builder with `preserveOrder:true` and does not sufficiently constrain input structure or size, the attacker submits specially structured nested or malformed data that causes excessive recursion during XML construction. The vulnerable library exhausts the JavaScript stack, commonly resulting in a `RangeError: Maximum call stack size exceeded` and termination or restart of the Node.js process. Repeated submissions can keep the affected service unstable or unavailable until the dependency is upgraded, the vulnerable option is disabled, or input validation/rate limiting blocks the payloads.
How to fix it
Upgrade fast-xml-parser to version 5.3.8 or later. For source-based consumers tracking the Git repository, ensure the dependency includes fix commit `c692040f6b5f5045d38b66b1da04e4d3abc97052` or a later trusted revision. Regenerate and redeploy lockfiles and container images so runtime artifacts no longer include vulnerable versions. If immediate upgrade is not possible, avoid using XML builder with `preserveOrder:true`; configure `preserveOrder:false` where functionally acceptable. Add input validation before XML building, including maximum depth, maximum object size, maximum array length, maximum request body size, and rejection of unexpected structures. Apply rate limiting and worker/process supervision to reduce denial-of-service impact, but treat these as compensating controls rather than a fix.
How to confirm the fix worked
Confirm all package manifests and lockfiles resolve fast-xml-parser to 5.3.8 or later, or to a Git revision at or after `c692040f6b5f5045d38b66b1da04e4d3abc97052`. Use software composition analysis, `npm ls fast-xml-parser`, `yarn why fast-xml-parser`, or equivalent dependency inventory tooling to find both direct and transitive usage. Review application code for `new XMLBuilder({ preserveOrder: true })`, `preserveOrder:true`, or dynamically supplied builder options. Validate deployed artifacts, not only source repositories, by inspecting production container images or build outputs for `node_modules/fast-xml-parser/package.json`. In a controlled non-production environment, exercise XML-building paths with deeply nested test input and confirm the service rejects the input or handles it without stack overflow or process termination.
Typical attack path
- Identify an application feature that accepts user-controlled data and returns, stores, or forwards XML.
- Confirm or infer that the application uses fast-xml-parser XMLBuilder with `preserveOrder:true`.
- Send deeply nested, cyclic-like, or otherwise problematic structured input that is passed to the XML builder.
- Trigger stack exhaustion during XML generation, causing the Node.js process or request handler to crash.
- Repeat requests or messages to create sustained denial of service.
How to detect it
To determine whether exploitation has already occurred, review application logs, Node.js process logs, container logs, API gateway logs, load balancer logs, queue consumer logs, and process supervisor events for stack overflow crashes near requests or messages that trigger XML generation. Look for repeated `RangeError: Maximum call stack size exceeded` errors, stack traces referencing `fast-xml-parser`, `XMLBuilder`, or `node_modules/fast-xml-parser`, and service restarts immediately following requests with unusually large or deeply nested JSON/XML-like payloads. Correlate crashes with source IPs, API routes, user agents, webhook senders, uploaded files, or queue message identifiers to identify repeated triggering patterns. Because this vulnerability causes availability impact rather than creating a persistent artifact, absence of file-system changes does not rule out attempted exploitation; the strongest evidence is correlated crash telemetry and repeated malformed input reaching XML-building code paths.
- RangeError: Maximum call stack size exceeded
- Maximum call stack size exceeded
- node_modules/fast-xml-parser
- fast-xml-parser
- XMLBuilder
- preserveOrder:true
- preserveOrder: true
- new XMLBuilder({ preserveOrder: true })
- new XMLBuilder({preserveOrder:true})
- Process exited with code 1
- JavaScript heap out of memory
- uncaughtException
- UnhandledPromiseRejection
- Error: write EPIPE
What your security team should do
- Prioritize upgrade of fast-xml-parser to 5.3.8 or later for internet-facing APIs, webhook receivers, file import services, and asynchronous workers that process untrusted data.
- Search code repositories and deployed artifacts for `preserveOrder:true` and review whether untrusted input can reach XMLBuilder.
- Add depth, size, and schema validation controls before XML generation where the XML builder receives external input.
- Monitor application logs and process supervisors for stack overflow crashes involving fast-xml-parser or XMLBuilder.
- Ensure dependency scanning covers transitive JavaScript dependencies and fails builds that include vulnerable fast-xml-parser versions.
- Use rate limiting, request body size limits, queue throttling, and automatic process restart as temporary safeguards until the dependency is fully patched.
The record
fast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from JS object without C/C++ based libraries and no callback. Prior to version 5.3.8, the application crashes with stack overflow when user use XML builder with `preserveOrder:true`. Version 5.3.8 fixes the issue. As a workaround, use XML builder with `preserveOrder:false` or check the input data before passing to builder.
Affected packages
| Ecosystem | Package | Introduced | Fixed |
|---|---|---|---|
| npm | fast-xml-parser | 4.0.0-beta.0 | 4.5.4 |
| npm | fast-xml-parser | 5.0.0 | 5.3.8 |
| Chainguard | dbgate | 0 | 7.1.2-r1 |
| Chainguard | dbgate-fips | 0 | 7.1.2-r0 |
| Chainguard | jitsucom-jitsu-console | 0 | 2.11.0-r16 |
| Chainguard | kibana-8.17 | 0 | 8.17.10-r11 |
| Chainguard | kibana-8.17-iamguarded | 0 | 8.17.10-r11 |
| Chainguard | kibana-8.19 | 0 | 8.19.12-r3 |
| Chainguard | kibana-8.19-bitnami | 0 | 8.19.12-r3 |
| Chainguard | kibana-8.19-iamguarded | 0 | 8.19.12-r3 |
| Chainguard | kibana-9.0 | 0 | 9.0.8-r11 |
| Chainguard | kibana-9.0-iamguarded | 0 | 9.0.8-r11 |
| Chainguard | kibana-9.1 | 0 | 9.1.10-r6 |
| Chainguard | kibana-9.1-iamguarded | 0 | 9.1.10-r6 |
| Chainguard | kibana-9.2 | 0 | 9.2.6-r2 |
| Chainguard | kibana-9.2-iamguarded | 0 | 9.2.6-r2 |
| Chainguard | kibana-9.3 | 0 | 9.3.1-r1 |
| Chainguard | kibana-9.3-iamguarded | 0 | 9.3.1-r1 |
| Chainguard | kubeflow-pipelines-frontend | 0 | 2.16.0-r2 |
| Chainguard | langfuse-2-worker | 0 | 2.95.12-r12 |
| Chainguard | librechat | 0 | 0.8.2-r6 |
| Chainguard | opensearch-dashboards-3 | 0 | 3.5.0-r3 |
| Chainguard | opensearch-dashboards-3-fips | 0 | 3.5.0-r2 |
| Chainguard | prism | 0 | 5.14.3-r8 |
| Chainguard | renovate | 0 | 43.48.3-r0 |
| Chainguard | tileserver-gl | 0 | 5.5.0-r6 |
| Chainguard | tileserver-gl-fips | 0 | 5.5.0-r7 |
| Wolfi | jitsucom-jitsu-console | 0 | 2.11.0-r16 |
| Wolfi | kubeflow-pipelines-frontend | 0 | 2.16.0-r2 |
| Wolfi | opensearch-dashboards-3 | 0 | 3.5.0-r3 |
| Wolfi | prism | 0 | 5.14.3-r8 |
| Wolfi | renovate | 0 | 43.48.3-r0 |
| Wolfi | tileserver-gl | 0 | 5.5.0-r6 |
Related vulnerabilities
- GHSA-fj3w-jwp8-x2g3 fast-xml-parser has stack overflow in XMLBuilder with preserveOrder Same vulnerability
- CVE-2026-41650 fast-xml-parser allows users to process XML from JS object without C/C++ based libraries… Also affects fast-xml-parser
- GHSA-gh4j-gqv2-49f6 fast-xml-parser XMLBuilder: XML Comment and CDATA Injection via Unescaped Delimiters Also affects fast-xml-parser
- CVE-2026-33349 fast-xml-parser allows users to process XML from JS object without C/C++ based libraries… Also affects fast-xml-parser
- CVE-2026-33036 fast-xml-parser allows users to process XML from JS object without C/C++ based libraries… Also affects fast-xml-parser
- GHSA-jp2q-39xq-3w4g Entity Expansion Limits Bypassed When Set to Zero Due to JavaScript Falsy Evaluation in… Also affects fast-xml-parser
- GHSA-8gc5-j5rx-235r fast-xml-parser affected by numeric entity expansion bypassing all entity expansion… Also affects fast-xml-parser
- CVE-2026-25896 fast-xml-parser allows users to validate XML, parse XML to JS object, or build XML from… Also affects fast-xml-parser