Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker supplies object with crafted constructor name
-
ExploitApp copies untrusted props onto a typed array
-
Executionserialize/crossSerialize emits name as raw JS
-
ImpactScript executes in victim's receiving page
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a specific, non-default application pattern: code that copies untrusted own properties - specifically an own |
| Impact | This is a genuinely low-to-moderate-priority issue despite the 'script execution' outcome, and the signals are consistent rather than conflicting. The CVSS 4.0 vector (AV:N/AC:H/AT:P/PR:N/UI:P) describes a network-reachable but hard-to-reach flaw: the AC:H and AT:P metrics reflect the vendor's own statement that exploitation requires an unusual application coding pattern, and UI:P requires a victim to load the page that receives the serialized output. EPSS is low at 0.27% (19th percentile), SSVC reports Exploitation: none / Automatable: no / Technical Impact: partial, and the issue is not in CISA KEV - all of which agree with the vendor's self-assessed Low severity. The vuln.today decision label is 'this_month', i.e. patch on a normal cadence, not an emergency. The only upward signal is the qualitative impact (arbitrary JavaScript in the receiving page), but it is gated behind a precondition the vendor explicitly calls 'unusual' (application code copying untrusted own properties, including a constructor property, onto a typed array before serializing). Note one internal tension to verify: the input CVSS 4.0 rates subsequent-system impact as SC:H/SI:H, which is higher than the overall 5.3 Medium score and the vendor's Low rating would suggest - the high subsequent-impact metrics reflect worst-case script execution, not likelihood. |
| Exploit ScenarioDerived | An application copies attacker-controlled properties from an untrusted object onto a typed array (setting its own |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 28, 2026
Code injection in the Seroval JavaScript serialization library 1.6.0 through 1.6.10 lets attacker-controlled text become executable JavaScript in the serializer's output when an application copies an untrusted own constructor property onto a typed array and then passes that array to serialize, serializeAsync, crossSerialize, crossSerializeAsync, crossSerializeStream, the Serializer class, or compileJSON. The vendor rates the result low severity because that property-copying pattern is described as unusual, and the injected script only executes once a victim loads a page that receives the serialized output (CVSS 4.0 AV:N/AC:H/AT:P/PR:N/UI:P with scope change to confidentiality and integrity). There is no confirmed active exploitation (not in CISA KEV; SSVC exploitation: none) and no public exploit identified at time of analysis, with EPSS at 0.27% (19th percentile), and the flaw is fixed in Seroval 1.6.11.
RemediationAI
Vendor-released patch: Seroval 1.6.11. Upgrade the seroval dependency to 1.6.11 or later, which makes the emitted constructor name come from the array's internal type via the TypedArray.prototype[Symbol.toStringTag] getter instead of value.constructor.name, and also applies the real type under compactArrayBufferViews; the release is at https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.11 and the change is visible in commit 1313ebbad9687bc0245e08bfd576376e57e0e5c1, with advisory detail at https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-f86p-h4j2-7qgj. If upgrading is not immediately possible, the vendor's stated workarounds are to avoid copying properties from untrusted objects onto typed arrays, or to delete any own constructor property from a typed array before passing it to a serialization API; both require auditing the calling code, and the second adds a per-value cleanup step on every serialization path and will not help if the copy happens after the check. Enabling compactArrayBufferViews changes the failure mode to a TypeError rather than emitted code, but it alters serialized output for ArrayBuffer views and is therefore only a partial, behavior-changing mitigation, not a substitute for the 1.6.11 upgrade.
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 JavaScript values, including structures JSON.stringify cannot represent, and the affected JavaScript-output APIs emit live code rather than data. Version 1.6.0 changed how the library determines an object's class so that objects carrying their own constructor property serialize correctly, but the typed-array emit paths in createTypedArrayNode and createBigIntTypedArrayNode (packages/seroval/src/core/base-primitives.ts) kept deriving the constructor name from current.constructor.name, and getArrayBufferView in the parser context used current.constructor directly. Because an own property shadows the prototype's accessor, a typed array that received an attacker-supplied constructor object (for example { name: 'alert(1)//' } or { name: '</script>' }) causes that string to be written unescaped into output such as new <attacker string>(...), which the receiving page then evaluates - a code-injection / cross-site scripting class issue tracked as CWE-79 by the CNA and CWE-94 in the GitHub advisory. The triggers are narrow: only applications that copy untrusted properties onto a typed array and then serialize it are exposed; fromJSON and fromCrossJSON are unaffected because they only accept the names of built-in typed arrays, and the compactArrayBufferViews option throws a TypeError instead of emitting code. The 1.6.11 fix replaces the property lookup with the getter behind TypedArray.prototype[Symbol.toStringTag], which reads the array's internal type and cannot be overridden by an own property, and the accompanying regression tests assert that spoofed constructor names never reach the output. The CVSS 4.0 vector carries PR:N (unauthenticated) with AC:H and UI:P, reflecting a remote, unauthenticated but high-complexity path that depends on the victim loading the page that consumes the serialized payload.
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
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
AC:H because exploitation depends on an unusual app pattern copying untrusted props onto a typed array; UI:R and S:C because injected script runs in the separate receiving page; C:L/I:L for XSS-level browser impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. From 1.6.0 until 1.6.11, the JavaScript-output APIs derive a typed array's constructor name from a property on the value that can be replaced by an own constructor property. When application code copies untrusted properties onto a typed array and then passes it to serialize, serializeAsync, crossSerialize, crossSerializeAsync, crossSerializeStream, Serializer, or compileJSON, the attacker-controlled name is written as executable JavaScript and can run in the page receiving the output. This issue is fixed in version 1.6.11.
Blast Radius
ecosystem impact- 1 npm packages depend on seroval (1 direct, 0 indirect)
Ecosystem-wide dependent count for version 1.6.0.
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
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
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 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
Script injection in seroval's JavaScript-output serializers lets a RegExp whose source contains '<' terminate an HTML <s
EUVD-2026-110462
GHSA-f86p-h4j2-7qgj
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB