Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessSubmit crafted seroval payload to fromJSON
-
DeliveryReuse node id to reference plugin value
-
ExploitDeserializer invokes that value's on method
-
ExecutionPlugin-produced callable executes attacker-chosen behavior
-
ImpactConfidentiality/integrity/availability impact per plugin
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A08:2025 - Software or Data Integrity Failures
ASVS 5.0
V1 - Encoding and Sanitization Safe deserialization, type allowlists
MITRE ATT&CK
2 techniques across 2 tactics: Execution, Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Two concrete prerequisites must both hold: (1) the application passes attacker-controlled/untrusted input to seroval's fromJSON deserializer, and (2) the application registers a Seroval plugin whose deserialize returns a callable value or an object exposing an 'on' method. The crafted node reuses an identifier so the AsyncIteratorFactoryInstance rebuild calls source.on(listener) on that plugin value. Limiting factors that reduce realistic risk: the vulnerable plugin behavior is a non-default, application-specific choice (absent such a plugin the attacker-chosen value cannot be meaningfully invoked); the resulting impact is bounded entirely by what the plugin's callable does; and only versions up to 1.6.7 are affected (1.6.4-1.6.7 block the originally reported payload but remain bypassable via node-id reuse). |
| Impact | The input CVSS of 7.3 (High) with vector AV:N/AC:L/PR:N/UI:N/C:L/I:L/A:L makes this look like a broadly exploitable network flaw, but the supporting signals and the description pull the real-world risk lower. EPSS is only 0.34% (28th percentile) and there is no CISA KEV listing and no public exploit reference in the input, so there is no evidence of active or at-scale exploitation. The vuln.today decision label is 'this_week,' indicating a scheduled-remediation priority rather than act_now/emergency. The most important nuance is a conflict between the AC:L in the supplied vector and the description: exploitation is not possible against a default seroval deployment - it requires BOTH that the application feeds untrusted input to fromJSON AND that it registers a plugin whose deserialize returns a callable value or an object exposing an 'on' method. That plugin configuration is a condition beyond the attacker's control, which argues for AC:H rather than AC:L. The C:L/I:L/A:L impact is also explicitly indeterminate - the advisory states the actual confidentiality/integrity/availability effect 'depends on what the plugin's values do,' so Low is a conservative floor, not a measured ceiling. Net: a genuine deserialization (CWE-502) issue worth patching on a near-term schedule, but gated by application-specific plugin usage rather than a widely-exploitable default-config bug. |
| Exploit ScenarioDerived | An application running seroval 1.6.7 or earlier deserializes attacker-supplied data with fromJSON while also using a plugin whose deserialize returns a callable value (or an object with an 'on' method). The attacker submits a crafted payload that reuses a node identifier so that rebuilding an AsyncIteratorFactoryInstance calls source.on(listener) on the plugin-produced value instead of a genuine internal stream, invoking attacker-chosen behavior during deserialization. No public exploit was identified at time of analysis, and the attack only works where that specific plugin configuration is present. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Seroval deserialization can invoke attacker-chosen callables when an application passes untrusted input to fromJSON and registers a plugin whose deserialize result is a function or an object exposing an on method; a crafted AsyncIteratorFactoryInstance node reuses an identifier so the rebuild calls source.on(listener) on that plugin-produced value. All versions through 1.6.7 are affected, although 1.6.4 through 1.6.7 block the originally reported payload only to remain bypassable via node-id reuse. Practical risk is constrained by the non-default plugin prerequisite and by what the plugin's own callable does, and no public exploit was identified at time of analysis; version 1.6.8 fixes the flaw.
RemediationAI
Upgrade to seroval@1.6.8 or later; the vendor release is at https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8 and the advisory is at https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-7rv5-mrxv-xcr9. If upgrading cannot be done immediately, the vendor workaround is to avoid plugins whose deserialize returns functions or objects exposing an on method when decoding untrusted input, since those are the values the deserializer can be tricked into calling; this limits that plugin functionality but removes the invocation path, and the vendor recommends upgrading as the complete fix. No other mitigation is stated in the available sources.
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 an npm library for stringifying and reviving JavaScript values beyond JSON.stringify, including streams, sequences, promises, and async iterators. The flaw is CWE-502 deserialization of untrusted data: when fromJSON rebuilds an AsyncIteratorFactoryInstance, it calls source.on(listener) without verifying that source is a genuine internal stream. The incomplete-fix history matters: versions up to 1.6.3 accept any value as the source, 1.6.4 rejects the reported payload, and 1.6.5 through 1.6.7 check the source by node type but a payload can bypass that check by reusing a node id. Version 1.6.8 replaces marker-property stream and sequence objects with internal classes checked via instanceof, so plain data and plugin values are rejected. The trigger requires untrusted Seroval input plus an application plugin whose deserialize returns a callable value or an object with an on method; absent that plugin configuration, the attacker-chosen value cannot be meaningfully invoked.
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:L/I:L/A:L
Exploitation requires an application plugin that returns callables - a condition beyond the attacker's control - so AC:H; untrusted input needs no auth (PR:N); impact is plugin-dependent, set Low.
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. Prior to 1.6.8, fromJSON rebuilds an AsyncIteratorFactoryInstance by calling source.on(listener) without requiring source to be a genuine internal stream. With untrusted Seroval input and an application plugin that returns a callable value or an object exposing an on method, a crafted node can reuse an identifier so the deserializer invokes the plugin-produced value. This is an incomplete-fix variant of CVE-2026-59940. The resulting confidentiality, integrity, or availability impact depends on the behavior exposed by the application plugin. This issue is fixed in version 1.6.8.
Blast Radius
ecosystem impact- 8 npm packages depend on seroval (3 direct, 5 indirect)
Ecosystem-wide dependent count for version 1.6.8.
Executive ViewAI
CVE-2026-116580 is a high-severity vulnerability in the Seroval deserialization library (up to version 1.6.7) that could allow an attacker to invoke arbitrary callables if an application uses fromJSON with a non-default plugin and accepts untrusted input. Successful exploitation could lead to unintended actions or data exposure, impacting applications that rely on this library for parsing user-supplied data.
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
Insecure deserialization occurs when an application converts serialized data (a stream of bytes representing an object's state) back into a living object without proper validation.
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
Denial of service in the seroval npm package (versions 1.4.1 through 1.6.7) lets an unauthenticated remote attacker who
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 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-110242
GHSA-7rv5-mrxv-xcr9
NVD
CVE.org
EPSS
Exploit-DB