Every CVE Search/ Get API key

CVE-2026-32141

flatted: Unbounded recursion DoS in parse() revive phase

7.5 HighFix available

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
None
Availability
High

Exploit likelihood

0.84%Up 0.8 points since Mar 13, 2026
90%50%10%1%

What each source reports

CVE List Score used 7.5

flatted: Unbounded recursion DoS in parse() revive phase

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-674, CWE-770
Updated
2026-11-02
EUVDEUVD-2026-11653 7.5

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
EUVD-2026-11653
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
GitHub AdvisoriesGHSA-25h7-pfq9-p65f 7.5

flatted vulnerable to unbounded recursion DoS in parse() revive phase

Summary

flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process.

Impact

Denial of Service (DoS). Any application that passes untrusted input to flatted.parse() can be crashed by an unauthenticated attacker with a single request.

flatted has ~87M weekly npm downloads and is used as the circular-JSON serialization layer in many caching and logging libraries.

Proof of Concept

const flatted = require('flatted');

// Build deeply nested circular reference chain
const depth = 20000;
const arr = new Array(depth + 1);
arr[0] = '{"a":"1"}';
for (let i = 1; i <= depth; i++) {
  arr[i] = `{"a":"${i + 1}"}`;
}
arr[depth] = '{"a":"leaf"}';

const payload = JSON.stringify(arr);
flatted.parse(payload); // RangeError: Maximum call stack size exceeded

Fix

The maintainer has already merged an iterative (non-recursive) implementation in PR #88, converting the recursive revive() to a stack-based loop.

Affected Versions

All versions prior to the PR #88 fix.

Record
GHSA-25h7-pfq9-p65f
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-674
Updated
2026-11-02
NVD 7.5

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-674, CWE-770
Updated
2026-11-02
OSV 7.5

flatted: Unbounded recursion DoS in parse() revive phase

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-674
Updated
2026-11-02
OSVDEBIAN-CVE-2026-32141 7.5

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
DEBIAN-CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
Show 10 moreShow less
OSVGHSA-25h7-pfq9-p65f 7.5

flatted vulnerable to unbounded recursion DoS in parse() revive phase

Summary

flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process.

Impact

Denial of Service (DoS). Any application that passes untrusted input to flatted.parse() can be crashed by an unauthenticated attacker with a single request.

flatted has ~87M weekly npm downloads and is used as the circular-JSON serialization layer in many caching and logging libraries.

Proof of Concept

const flatted = require('flatted');

// Build deeply nested circular reference chain
const depth = 20000;
const arr = new Array(depth + 1);
arr[0] = '{"a":"1"}';
for (let i = 1; i <= depth; i++) {
  arr[i] = `{"a":"${i + 1}"}`;
}
arr[depth] = '{"a":"leaf"}';

const payload = JSON.stringify(arr);
flatted.parse(payload); // RangeError: Maximum call stack size exceeded

Fix

The maintainer has already merged an iterative (non-recursive) implementation in PR #88, converting the recursive revive() to a stack-based loop.

Affected Versions

All versions prior to the PR #88 fix.

Record
GHSA-25h7-pfq9-p65f
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weakness
CWE-674
Updated
2026-11-02
OSVROOT-APP-NPM-CVE-2026-32141 7.5

CVE-2026-32141 in flatted - Patched by Root

Root has patched CVE-2026-32141 in the flatted package for Root:npm. Multiple fixed versions available.

Record
ROOT-APP-NPM-CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVUBUNTU-CVE-2026-32141 7.5

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
UBUNTU-CVE-2026-32141
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Updated
2026-11-02
OSVAZL-80312 No score

CVE-2026-32141 affecting package js-jquery 3.5.0-4

flatted is a circular JSON parser. Prior to 3.4.0, flatted's parse() function uses a recursive revive() phase to resolve circular references in deserialized JSON. When given a crafted payload with deeply nested or self-referential $ indices, the recursion depth is unbounded, causing a stack overflow that crashes the Node.js process. This vulnerability is fixed in 3.4.0.

Record
AZL-80312
Updated
2026-11-05
OSVCLSA-2026-1776299659 No score

TuxCare security update for flatted (2 CVEs)

TuxCare rebuilt flatted to address 2 CVEs. Fixed in 2.0.2-tuxcare.1.

Record
CLSA-2026-1776299659
Updated
2026-11-02
OSVCLSA-2026-1779410883 No score

TuxCare security update for flatted (2 CVEs)

TuxCare rebuilt flatted to address 2 CVEs. Fixed in 3.3.3-tuxcare.1.

Record
CLSA-2026-1779410883
Updated
2026-11-02
OSVCLSA-2026-1781830591 No score

TuxCare security update for flatted (2 CVEs)

TuxCare rebuilt flatted to address 2 CVEs. Fixed in 3.2.9-tuxcare.1.

Record
CLSA-2026-1781830591
Updated
2026-11-02
OSVCLSA-2026-1781830592 No score

TuxCare security update for flatted (2 CVEs)

TuxCare rebuilt flatted to address 2 CVEs. Fixed in 3.3.2-tuxcare.1.

Record
CLSA-2026-1781830592
Updated
2026-11-02
OSVCLSA-2026-1781830593 No score

TuxCare security update for flatted (2 CVEs)

TuxCare rebuilt flatted to address 2 CVEs. Fixed in 3.3.1-tuxcare.1.

Record
CLSA-2026-1781830593
Updated
2026-11-02
OSVCLSA-2026-1792232973 No score

TuxCare security update for flatted (1 CVE)

TuxCare rebuilt flatted to address 1 CVE. Fixed in 2.0.0-tuxcare.2.

Record
CLSA-2026-1792232973
Updated
2026-11-02

Affected products

Show 20 moreShow less

Affected packages

Affected packages
PackageAffectedFixed
flatted
npm
before 3.4.0
3.4.0
js-jquery
Azure Linux:3
through 3.5.0-4 None known
flatted
TuxCare:npm
From an advisory covering 2 CVEs
2.0.2-tuxcare.0 up to 2.0.2-tuxcare.1, plus listed versions
2.0.2
2.0.2-tuxcare.1
flatted
TuxCare:npm
From an advisory covering 2 CVEs
3.3.3-tuxcare.0 up to 3.3.3-tuxcare.1, plus listed versions
3.3.3
3.3.3-tuxcare.1
flatted
TuxCare:npm
From an advisory covering 2 CVEs
3.2.9-tuxcare.0 up to 3.2.9-tuxcare.1, plus listed versions
3.2.9
3.2.9-tuxcare.1
flatted
TuxCare:npm
From an advisory covering 2 CVEs
3.3.2-tuxcare.0 up to 3.3.2-tuxcare.1, plus listed versions
3.3.2
3.3.2-tuxcare.1
flatted
TuxCare:npm
From an advisory covering 2 CVEs
3.3.1-tuxcare.0 up to 3.3.1-tuxcare.1, plus listed versions
3.3.1
3.3.1-tuxcare.1
flatted
TuxCare:npm
2.0.0-tuxcare.0 up to 2.0.0-tuxcare.2, plus listed versions
2.0.02.0.0-tuxcare.1
2.0.0-tuxcare.2
node-flatted
Debian:12
All versions, plus listed versions
3.2.7~ds-13.2.7~ds-1+deb12u13.4.1~ds-13.4.2~ds-13.4.4~ds-1
None known
node-flatted
Debian:13
All versions, plus listed versions
3.2.7~ds-13.2.7~ds-1+deb13u13.4.1~ds-13.4.2~ds-13.4.4~ds-1
None known
Show 9 moreShow less
Affected packages
PackageAffectedFixed
node-flatted
Debian:14
before 3.4.1~ds-1, plus listed versions
3.2.7~ds-1
3.4.1~ds-1
flatted
Root:npm
before 3.3.1-aikido.3
3.3.1-aikido.33.3.3-aikido.32.0.2-aikido.23.3.2-aikido.43.2.7-aikido.23.2.9-aikido.13.2.5-aikido.13.2.9-aikido.23.2.2-aikido.13.2.2-aikido.2
@rootio/flatted
Root:npm
before 3.3.3-root.io.1
3.3.3-root.io.13.3.1-root.io.13.3.2-root.io.13.3.2-root.io.23.3.1-root.io.23.3.3-root.io.23.3.2-root.io.32.0.2-root.io.13.3.1-root.io.33.3.3-root.io.32.0.2-root.io.23.3.2-root.io.43.2.7-root.io.23.2.9-root.io.13.2.5-root.io.13.2.9-root.io.23.2.2-root.io.13.2.2-root.io.2
node-flatted
Ubuntu:20.04:LTS
All versions, plus listed versions
2.0.1~dfsg-32.0.1~dfsg-4
None known
node-flatted
Ubuntu:22.04:LTS
All versions, plus listed versions
2.0.2~dfsg-12.0.2~dfsg-43.2.2~ds-23.2.2~ds-33.2.4~ds-13.2.5~ds-1
None known
node-flatted
Ubuntu:24.04:LTS
All versions, plus listed versions
3.2.7~ds-1
None known
node-flatted
Ubuntu:25.10
All versions, plus listed versions
3.2.7~ds-1
None known
node-flatted
Ubuntu:26.10
All versions, plus listed versions
3.4.2~ds-13.4.4~ds-1
None known
node-flatted
Ubuntu:26.04:LTS
All versions, plus listed versions
3.2.7~ds-13.4.2~ds-1
None known

History

History
RecordedChangedSources
affected
factsOSV
first indexedCVE List, EUVD, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2026-32141 is a high vulnerability (CVSS 7.5) in Webreflection Flatted, published March 12, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.84%, the 58th percentile. Fixed in flatted 3.4.0.

References

Show 15 moreShow less
MoveEnter Open