Skip to main content

flat npm package EUVDEUVD-2026-112817

| CVE-2026-119051 HIGH
Allocation of Resources Without Limits or Throttling (CWE-770)
2026-10-29 VulnCheck GHSA-476f-8ccp-82xp
8.2
CVSS 4.0 · Vendor: VulnCheck
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Submit crafted JSON with large numeric key
  2. Exploit
    unflatten() allocates huge sparse array
  3. Execution
    forEach/spread/JSON.stringify blocks Node.js event loop
  4. Impact
    service denial of service

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A06:2025 - Insecure Design
ASVS 5.0
V2 - Validation and Business Logic Resource allocation limits
MITRE ATT&CK

1 technique across 1 tactic: Impact

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

Exploitation requires two application-side preconditions, both drawn from the description: (1) the application must pass attacker-controlled data to flat's unflatten() function, and (2) a flattened key must contain a large unbounded numeric index (e.g. 'a.4294967294') that causes allocation of a huge sparse array, after which (3) the application must iterate or serialize the resulting object via forEach, spread, or JSON.stringify to actually block the event loop. Limiting factors: the impact is availability-only (no data disclosure or modification); applications that never unflatten untrusted input, or that do not subsequently iterate/serialize the output, are not exploitable; the CVSS AC:H/AT:P metrics reflect that success depends on this application processing path rather than a guaranteed single request.

Impact

The input assigns a CVSS 4.0 base score of 8.2 (High) with vector CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N, which is driven entirely by an availability impact (VA:H) with zero confidentiality or integrity impact - this is a pure denial-of-service issue (CWE-770, uncontrolled resource allocation). Two signals temper the raw score: AC:H and AT:P indicate the attack is not trivially reliable and depends on an attack requirement beyond the attacker's control, consistent with the description, where the DoS only materializes if the application calls unflatten() on attacker-controlled input and then iterates or serializes the result (forEach, spread, or JSON.stringify). No EPSS score is provided in the input, so exploitation probability cannot be quantified. The CVE is NOT in CISA KEV, and the input contains no confirmed proof-of-concept flag, so there is no public exploit identified at time of analysis - though the referenced GitHub issue #195 and the linked source lines document the trigger mechanism. The vuln.today decision label is 'this_week', reflecting moderate rather than emergency urgency. Net: this is a genuine but conditional DoS in a widely-used library; it is a real priority for services that unflatten untrusted input, but it is confidentiality/integrity-neutral and gated on application behavior rather than a drop-everything emergency.

Exploit ScenarioDerived

An attacker submits a JSON payload containing a flattened key with a very large numeric index, such as 'a.4294967294', to an endpoint that passes the parsed body to flat's unflatten(). unflatten() allocates a huge sparse array sized to that index, and when the application then calls forEach, spread, or JSON.stringify on the result, the Node.js event loop blocks and the service becomes unresponsive. No public exploit is identified in the input, but the referenced GitHub issue documents the exact trigger.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
No patch listed yet 0.3% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 29, 2026

Denial of service in the flat npm package (hughsk/flat) through 6.0.1 lets an attacker who can influence input passed to unflatten() exhaust Node.js resources by supplying a dotted key with a very large numeric array index, such as a.4294967294. The resulting huge sparse array only blocks the event loop when the application subsequently iterates or serializes the object via forEach, spread or JSON.stringify, so impact is availability-only with no confidentiality or integrity effect. The input assigns CVSS 4.0 base score 8.2 (High) and the priority decision is this_week; no public exploit code has been identified at time of analysis and the issue is not listed as confirmed actively exploited (CISA KEV).

RemediationAI

No vendor-released patch or fixed version is identified in the available data for flat through 6.0.1; the public references are the upstream issue at https://github.com/hughsk/flat/issues/195 and the VulnCheck advisory at https://www.vulncheck.com/advisories/flat-through-6.0.1-denial-of-service-via-unflatten-numeric-array-index-keys, which should be monitored for a release that bounds numeric key segments. Until then, the controls that map to the assessed preconditions are: do not pass untrusted input to unflatten() - resolve attacker-supplied keys against a fixed allowlist or keep unflatten() for trusted internal configuration only (trade-off: reduces flexibility for dynamic input shapes); reject or rewrite flattened keys whose numeric segments exceed a small maximum before parsing (trade-off: legitimate large-index keys, which are unusual in real payloads, would be refused); and avoid forEach, spread or JSON.stringify on objects produced from untrusted input, using bounded traversal instead (trade-off: requires auditing every consumer of the unflattened result). Because the impact is availability-only and the assessed exploitation conditions require both an attacker-controlled unflatten() call and a subsequent full traversal or serialization, prioritise inventory of Node.js services that call unflatten() on request data and apply the above controls ahead of scheduled dependency upgrades.

Affected VersionsENISA

flat 0 ≤6.0.1

Affected Packages

euvd flat no fix

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

flat is a widely used Node.js helper library that flattens nested objects into dotted keys and reverses the process with unflatten(), which walks each dot-delimited segment and rebuilds nested objects and arrays. The referenced source lines (index.js L65-L75 and L137-L142 at commit 1d68e1d) are where key segments are interpreted as numeric array indices. Because the index is accepted without an upper bound, a key such as a.4294967294 causes allocation of a sparse array whose length is near the 32-bit limit; the allocation itself is cheap, but any later full traversal of that structure - forEach, spread into a new array, or JSON.stringify - becomes an extremely long loop that monopolizes the event loop and stalls all other work on the process. The weakness class is CWE-770 (Allocation of Resources Without Limits or Throttling). The assessed vector CVSS:3.1/AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H matches the CVSS 4.0 data in being driven entirely by availability impact; AC:H/AT:P reflect that a successful denial of service depends on the application actually feeding attacker-controlled flattened keys into unflatten() and then iterating or serializing the result, rather than a guaranteed single request against every deployment. The specific trigger path in a given application is not described in the available sources beyond these processing requirements.

Know when Flat gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (VulnCheck) PRIMARY 8.2 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N
vuln.today AI 5.9 MEDIUM

Remotely reachable untrusted input (AV:N/PR:N/UI:N) but exploitation depends on the app unflattening then iterating the result (AC:H); impact is availability-only DoS (A:H, C/I:N).

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:N/I:N/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (VulnCheck).

CVSS VectorVendor: VulnCheck

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
None

DescriptionCVE.org

flat through 6.0.1 contains an uncontrolled resource allocation vulnerability in unflatten() that allows attackers to create huge sparse arrays via unbounded numeric keys. Attackers can supply flattened keys such as a.4294967294, causing iteration with forEach, spread or JSON.stringify to block the Node.js event loop.

Executive ViewAI

Why It Matters

A high-severity denial-of-service vulnerability in the widely used npm package 'flat' (versions through 6.0.1) can allow an attacker to stall Node.js applications by supplying malicious input that triggers resource exhaustion. This affects any service that processes untrusted data through the unflatten() function, potentially causing outages and disrupting business operations. Although no public exploit code or active exploitation has been observed, the broad use of this library means leadership should prioritize remediation to prevent availability incidents.

Business Impact: High
Compensating Controls

No vendor-released patch identified at time of analysis. Interim mitigations include input validation to reject dotted keys with numeric indices above a safe threshold (e.g., 10000), using a custom wrapper around unflatten() to enforce limits, avoiding iteration or serialization of unvalidated objects, and implementing rate limiting or resource quotas to reduce the impact of potential exploitation.

Threat Intelligence Overview

EPSS Score
0.3%
Top 75% exploitable
Prevalence
High
flat is a very popular npm utility, millions of weekly downloads as a dependency
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.3%
Patch available No
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

41
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +41
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy