Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify service decoding bodies with fromJSON
-
DeliveryCraft tiny payload with array node length={length:1e9}
-
ExploitSubmit unauthenticated request
-
ExecutionDecoder allocates/iterates on forged length
-
ImpactProcess memory exhausted or thread blocked
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 | Exploitable only when the application passes untrusted, attacker-controlled input to seroval's fromJSON or fromCrossJSON (e.g. decoding request bodies) before any application-level validation runs, on affected versions 1.4.1 through 1.6.7. The concrete trigger is an array/Set/Map/sequence/stream node whose element list (the |
| Impact | Signals are mostly consistent and point to a genuine but bounded availability problem rather than a critical emergency. The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, base 7.5) and CWE-770 describe a remote, unauthenticated, low-complexity resource-exhaustion flaw with availability-only impact - no confidentiality or integrity loss. EPSS is low at 0.36% (30th percentile), and the CVE is NOT on CISA KEV, so there is no evidence of active or widespread exploitation; this reads as a latent DoS, not a mass-exploited one. Counterbalancing the low EPSS, the GHSA advisory and the fix commit (including a regression test that tampers an array node's |
| Exploit ScenarioDerived | An application uses seroval's fromJSON or fromCrossJSON to decode an attacker-supplied request body before running its own validation. The attacker sends a small crafted payload in which an array node's element list is a non-array object such as {"length": 1e9}, so the attacker-controlled length drives memory allocation and decoder iterations independently of payload size. A public PoC reference exists in the form of the fix commit's regression test demonstrating the tampered-length payload; it is not packaged as a standalone working exploit. Given AV:N/AC:L/PR:N, a single unauthenticated request can exhaust process memory or block the event-loop thread indefinitely. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Denial of service in the seroval npm package (versions 1.4.1 through 1.6.7) lets an unauthenticated remote attacker who can get a crafted payload into fromJSON or fromCrossJSON exhaust process memory or block the decoding thread indefinitely. The flaw is a residual bypass of the fix for CVE-2026-23957, because the deserializer still accepted an array-like object such as {"length":2000000} in place of a genuine element array, so allocation and loop counts followed the forged length rather than the actual bytes on the wire. It is fixed in 1.6.8; there is no confirmed active exploitation (not in CISA KEV, no public exploit identified at time of analysis) and EPSS is low at 0.36% (30th percentile), so exposure depends almost entirely on whether a service feeds untrusted input to these decoders.
RemediationAI
Vendor-released patch: upgrade to seroval 1.6.8, which rejects any node whose element list is not a genuine array and throws SerovalMalformedNodeError; the release is available at https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8 and the change is in commit cdcee3e3bc384ee844360844f8ea98fd2b275d69. The advisory explicitly states there is no workaround - upgrading to 1.6.8 is the only complete fix - so treat version pinning, transitive dependency auditing and SBOM checks for seroval 1.4.1 through 1.6.7 as the priority. Where upgrading is not immediately possible, the practical compensating control is to stop routing untrusted input into fromJSON or fromCrossJSON at all: enforce a hard request-body size limit and a schema/type check on decoded structures before deserialization, and terminate any request whose payload nests array, Set, Map, sequence or stream nodes whose element lists are not real arrays; these reduce but do not eliminate exposure because the attack payload is tiny, and the guard must sit at the application layer ahead of the vulnerable decoder. Because the failure mode is per-process (memory exhaustion, event-loop blocking), running the decoder behind a worker with a memory cap and execution timeout limits blast radius, at the cost of added architectural complexity and per-request latency.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in npm
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
seroval is a JavaScript/TypeScript library that stringifies and revives values beyond what JSON.stringify can represent - Sets, Maps, streams, sequences and cyclic references - using a compact node format with a toJSON/fromJSON pair and a toCrossJSON/fromCrossJSON pair for cross-realm transfer. Each node carries element lists (the array node's a, a Set's a, a Map's e.k and e.v, object property keys, sequence and stream items) that the deserializer walks. Root cause is CWE-770, Allocation of Resources Without Limits or Throttling: the decoder trusted the length property of whatever object was in the element-list slot instead of verifying it was a real array, so a non-array array-like such as {"length": 2_000_000}, {"length": "Infinity"}, negative or fractional values drove preallocation and iteration with no corresponding data received. The upstream commit cdcee3e3bc384ee844360844f8ea98fd2b275d69 adds a validateNodeList() helper that throws SerovalMalformedNodeError when the list fails Array.isArray(), applied to array, Set, Map, object-record, sequence and stream deserialization paths. The prior change in 1.4.1 addressed the same class of issue (GHSA-66fc-rw6m-c2q6 / CVE-2026-23957) but did not cover these node types, which is why this is described as a residual bypass.
Know when Seroval 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Unauthenticated remote request to a service decoding untrusted input triggers the flaw with no interaction (AV:N/AC:L/PR:N/UI:N); impact is availability-only resource exhaustion, so C:N/I:N/A:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. From 1.4.1 until 1.6.8, fromJSON and fromCrossJSON do not require an array node's element list to be an actual array. A small crafted payload can supply an attacker-controlled length that determines memory allocation and decoder iterations independently of payload size, allowing an unauthenticated request to exhaust the process or block its thread. This issue is a residual bypass of the remediation for CVE-2026-23957. This issue is fixed in version 1.6.8.
Executive ViewAI
The seroval npm package, used for deserialization in various Node.js applications, contains a high-severity denial-of-service vulnerability (CVE-2026-116584) that allows an unauthenticated attacker to exhaust server memory or block processing by sending crafted input to the fromJSON or fromCrossJSON functions. This affects any service that processes untrusted data through these decoders, potentially causing service outages or degraded performance. Leadership should prioritize patching because exploitation is trivial if such a service is exposed, and the impact could disrupt business operations.
Apply vendor patch.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Deserialization of attacker-controlled JSON in plugin-capable Seroval releases 0.12.0 through 1.6.1 lets a remote unauth
Deserialization in Seroval prior to 1.6.8 accepts sequence nodes whose done and throw indices are unvalidated, so a craf
Denial of service in Seroval versions prior to 1.6.3 allows unauthenticated remote attackers to exhaust CPU and memory b
Arbitrary code execution in Seroval versions 1.4.0 and below allows authenticated attackers to execute malicious JavaScr
Seroval versions 1.4.0 and below are vulnerable to denial of service through malformed deserialization payloads that spe
Seroval versions 1.4.0 and below are vulnerable to denial of service attacks due to unbounded recursion when serializing
Seroval versions 1.4.0 and below allow remote attackers to cause denial of service through maliciously crafted RegExp pa
Seroval deserialization can invoke attacker-chosen callables when an application passes untrusted input to fromJSON and
Seroval is affected by improperly controlled modification of object prototype attributes (prototype pollution) (CVSS 7.3
Code injection in the Seroval JavaScript serialization library 1.6.0 through 1.6.10 lets attacker-controlled text become
Script injection in seroval's JavaScript-output serializers lets a RegExp whose source contains '<' terminate an HTML <s
EUVD-2026-110463
GHSA-wp97-x4hv-qvhp
NVD
CVE.org
EPSS
Exploit-DB