CVE-2026-116581
Seroval: fromJSON deserializer trusts sequence doneAt (unauthenticated event-loop DoS)
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. Prior to 1.6.8, fromJSON and fromCrossJSON do not validate a sequence node's done index. A crafted done index can create an iterator that never finishes when application code consumes it to completion. An unauthenticated request to a service that deserializes untrusted input can therefore block the event loop, exhaust process memory, or make the service unavailable. This issue is fixed in version 1.6.8.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- High
Exploit likelihood
What each source reports
CVE List Score used
7.5
Seroval: fromJSON deserializer trusts sequence doneAt (unauthenticated event-loop DoS)
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. Prior to 1.6.8, fromJSON and fromCrossJSON do not validate a sequence node's done index. A crafted done index can create an iterator that never finishes when application code consumes it to completion. An unauthenticated request to a service that deserializes untrusted input can therefore block the event loop, exhaust process memory, or make the service unavailable. This issue is fixed in version 1.6.8.
- Record
CVE-2026-116581- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-835, CWE-1284
- Updated
- 2026-11-02
EUVDEUVD-2026-110367
7.5
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. Prior to 1.6.8, fromJSON and fromCrossJSON do not validate a sequence node's done index. A crafted done index can create an iterator that never finishes when application code consumes it to completion. An unauthenticated request to a service that deserializes untrusted input can therefore block the event loop, exhaust process memory, or make the service unavailable. This issue is fixed in version 1.6.8.
- Record
EUVD-2026-110367- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-97r2-qh9m-474h
7.5
Seroval: fromJSON deserializer trusts node-supplied array length and sequence doneAt (unauthenticated event-loop DoS)
Summary
fromJSON and fromCrossJSON used two node fields without checking them.
- An array node's element list was not checked to be an array. A small payload could set the length the decoder looped over. This part is also tracked in GHSA-wp97-x4hv-qvhp.
- A sequence node's done index was not checked. A crafted value produced an iterator that never finished.
Impact
A service that passes untrusted input to fromJSON or fromCrossJSON can be made unavailable by an unauthenticated request.
- The array case blocks the thread while the decoder runs.
- The sequence case makes any code that reads the resulting iterator to the end run forever.
Patches
Fixed in [email protected].
- Element lists must be arrays.
- A sequence node's throw and done indices must be integers from -1 up to the last element index.
Invalid input throws SerovalMalformedNodeError.
Workarounds
None. Upgrade to 1.6.8.
- Record
GHSA-97r2-qh9m-474h- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-835, CWE-1284
- Updated
- 2026-11-02
NVD
7.5
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. Prior to 1.6.8, fromJSON and fromCrossJSON do not validate a sequence node's done index. A crafted done index can create an iterator that never finishes when application code consumes it to completion. An unauthenticated request to a service that deserializes untrusted input can therefore block the event loop, exhaust process memory, or make the service unavailable. This issue is fixed in version 1.6.8.
- Record
CVE-2026-116581- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-835, CWE-1284
- Updated
- 2026-11-02
OSV
7.5
Seroval: fromJSON deserializer trusts sequence doneAt (unauthenticated event-loop DoS)
Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. Prior to 1.6.8, fromJSON and fromCrossJSON do not validate a sequence node's done index. A crafted done index can create an iterator that never finishes when application code consumes it to completion. An unauthenticated request to a service that deserializes untrusted input can therefore block the event loop, exhaust process memory, or make the service unavailable. This issue is fixed in version 1.6.8.
- Record
CVE-2026-116581- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1284, CWE-835
- Updated
- 2026-11-02
OSVGHSA-97r2-qh9m-474h
7.5
Seroval: fromJSON deserializer trusts node-supplied array length and sequence doneAt (unauthenticated event-loop DoS)
Summary
fromJSON and fromCrossJSON used two node fields without checking them.
- An array node's element list was not checked to be an array. A small payload could set the length the decoder looped over. This part is also tracked in GHSA-wp97-x4hv-qvhp.
- A sequence node's done index was not checked. A crafted value produced an iterator that never finished.
Impact
A service that passes untrusted input to fromJSON or fromCrossJSON can be made unavailable by an unauthenticated request.
- The array case blocks the thread while the decoder runs.
- The sequence case makes any code that reads the resulting iterator to the end run forever.
Patches
Fixed in [email protected].
- Element lists must be arrays.
- A sequence node's throw and done indices must be integers from -1 up to the last element index.
Invalid input throws SerovalMalformedNodeError.
Workarounds
None. Upgrade to 1.6.8.
- Record
GHSA-97r2-qh9m-474h- CVSS 3.1
- 7.5 High
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H - Weakness
- CWE-1284, CWE-835
- Updated
- 2026-11-02
OSVCLSA-2026-1793699098 No score
TuxCare security update for seroval (2 CVEs)
TuxCare rebuilt seroval to address 2 CVEs. Fixed in 1.5.6-tuxcare.4.
- Record
CLSA-2026-1793699098- Updated
- 2026-11-03
Affected products
Affected packages
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| affected, aliases | OSV | |
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-116581 is a high vulnerability (CVSS 7.5) in Lxsmnsyc Seroval, published October 26, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.45%, the 39th percentile. Fixed in seroval 1.6.8.
References
github.com/lxsmnsyc/seroval/security/advisories/GHSA-97r2-qh9m-474h
github.com/lxsmnsyc/seroval/commit/e176f9267e59ddd6c9de89cc9fe85c5b37a5b728
github.com/lxsmnsyc/seroval/releases/tag/[email protected]
nvd.nist.gov/vuln/detail/CVE-2026-116581
github.com/lxsmnsyc/seroval/commit/cdcee3e3bc384ee844360844f8ea98fd2b275d69
github.com/advisories/GHSA-97r2-qh9m-474h
github.com/CVEProject/cvelistV5/tree/main/cves/2026/116xxx/CVE-2026-116581.json
github.com/lxsmnsyc/seroval