Cloudanix VulnDB

CVE-2026-27942

High · 7.5

CVSS

7.5

EPSS

0.7%

Published

Feb 26, 2026

CISA due date

—

Cloudanix analysis

Next patch cycle SSVC: Track

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

  1. Identify an application feature that accepts user-controlled data and returns, stores, or forwards XML.
  2. Confirm or infer that the application uses fast-xml-parser XMLBuilder with `preserveOrder:true`.
  3. Send deeply nested, cyclic-like, or otherwise problematic structured input that is passed to the XML builder.
  4. Trigger stack exhaustion during XML generation, causing the Node.js process or request handler to crash.
  5. 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