# CVE-2026-84375: js-yaml YAML merge CPU consumption DoS

Source: https://junglewise.ai/threats/cve-2026-84375-js-yaml-denial-of-service-via-empty-merge-sources  
Publisher: Junglewise Threat Intelligence, https://junglewise.ai/threats  
Published: 2026-09-01. Updated: 2026-09-25  
License: CC BY 4.0 with a link back

CVE-2026-84375 · Severity: high · CVSS 7.5 · Published 2026-09-01

js-yaml is a popular JavaScript library used to parse YAML configuration files. The library includes a safeguard (maxTotalMergeKeys) to prevent denial-of-service attacks during YAML parsing. However, this safeguard does not properly account for empty mappings in merge operations, allowing an attacker to submit a relatively small YAML file that causes the application's CPU to remain pinned for extended periods. This can exhaust server resources and disrupt services that parse untrusted YAML input.

Technologies: [js-yaml (npm)](https://junglewise.ai/threats/technologies/js-yaml). Vendors: [npm](https://junglewise.ai/threats/vendors/npm).

## Quick answers

**Is CVE-2026-84375 exploited in the wild?** No. Junglewise Threat Intelligence has no report of CVE-2026-84375 being exploited in the wild.

**How severe is CVE-2026-84375?** High severity, with a CVSS score of 7.5, published 1 September 2026.

**Which products and versions are affected?** js-yaml (npm) SEMVER:introduced=4.0.0,fixed=4.3.2.

**Is there a fix for CVE-2026-84375?** Yes. js-yaml (npm): upgrade to 4.3.2 or later. Junglewise finds every place you run it, drafts the upgrade and applies it once you approve.

**How is CVE-2026-84375 attacked?** It is attacked over the network, in a software library.

**Am I affected by CVE-2026-84375?** Check whether you run js-yaml (npm) at an affected version. Junglewise does that check for you around the clock: connect your code, cloud and domains, and it matches new vulnerabilities like this one against what you actually run and tells you when one reaches you.

## How to fix

- js-yaml (npm): upgrade to 4.3.2 or later

  ```sh
  npm install js-yaml@4.3.2
  ```


## Technical details

The vulnerability is a denial-of-service (DoS) attack in the YAML merge-key processing logic (class: uncontrolled resource consumption / inefficient algorithmic complexity). The root cause is that the maxTotalMergeKeys budget guard, introduced to prevent quadratic merge-key attacks, counts only folded keys—keys that actually appear in a merged mapping. Empty mappings (e.g., `{}`) consume real processing work during iteration but do not increment the counter, allowing the limit to be bypassed. An attacker can craft a YAML document with a large sequence of empty mappings aliased into multiple merge targets, resulting in O(N×K) CPU work (where N is sequence size and K is the number of targets) while the counter remains unchanged. The attack vector is network-based and requires no authentication; it triggers automatically when the library parses the malicious YAML with merge enabled (the default in YAML 1.1 schema). Patches are available in versions 3.15.2 and 4.3.2, which now charge the merge-key budget one unit per merge-source mapping, even if it folds no keys.

## Affected products

- nodeca js-yaml 3.0.0 to 3.15.1, 4.0.0 to 4.3.1

## Identifiers

- CVE-2026-84375
- GHSA-2883-xcg3-v3hh

## Timeline

- 2026-08-26: disclosed: Vulnerability published to GitHub Advisory Database (GHSA-2883-xcg3-v3hh)
- 2026-09-01: advisory: Published to NVD as CVE-2026-84375
- 2026-08-26: patched: Patches released: js-yaml 3.15.2, 4.3.2

## References

- [https://github.com/nodeca/js-yaml/security/advisories/GHSA-2883-xcg3-v3hh](https://github.com/nodeca/js-yaml/security/advisories/GHSA-2883-xcg3-v3hh)
- [https://github.com/nodeca/js-yaml/pull/797](https://github.com/nodeca/js-yaml/pull/797)
- [https://github.com/nodeca/js-yaml/commit/3485bc06ff8a0251505f44a00414d90df2466639](https://github.com/nodeca/js-yaml/commit/3485bc06ff8a0251505f44a00414d90df2466639)
- [https://github.com/nodeca/js-yaml/commit/6a8e05f9a485188ed730ac81e81ae221352ef480](https://github.com/nodeca/js-yaml/commit/6a8e05f9a485188ed730ac81e81ae221352ef480)
- [https://github.com/nodeca/js-yaml/commit/d90b6612a5a84385bdcb556c44578eac76dc0f6b](https://github.com/nodeca/js-yaml/commit/d90b6612a5a84385bdcb556c44578eac76dc0f6b)

## Related threats

- [js-yaml CPU exhaustion via merge keys with empty mappings](https://junglewise.ai/threats/js-yaml-maxtotalmergekeys-does-not-limit-cpu-use-for-empty-merge-e18172a3)
- [js-yaml exponential parsing time in flow collections denial of service](https://junglewise.ai/threats/cve-2026-73643-js-yaml-exponential-parsing-time-in-flow-collections-denial-of)
- [JS-YAML quadratic CPU consumption in !!omap resolution](https://junglewise.ai/threats/js-yaml-quadratic-cpu-consumption-in-omap-resolution-f21ac1bd)
- [nodeca js-yaml denial of service in YAML11_SCHEMA omap parsing](https://junglewise.ai/threats/cve-2026-59870-nodeca-js-yaml-denial-of-service-in-yaml11-schema-omap-parsing)
- [nodeca js-yaml denial of service via merge key chains](https://junglewise.ai/threats/cve-2026-59869-nodeca-js-yaml-denial-of-service-via-merge-key-chains)
