GitHub Advisoryadvisory · npm

GHSA-97r2-qh9m-474h Seroval: fromJSON deserializer trusts node-supplied array length and sequence doneAt (unauthenticated event-loop DoS)

HIGH Published 2026-10-28 Modified 2026-10-28 Official page ↗
Aliases
CVE-2026-116581
Ecosystem
npm
Packages
seroval
Severity
High
CVSS vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
Weaknesses
CWE-1284, CWE-835
Reviewed
2026-10-28

Affected packages

• npm seroval: < 1.6.8 → fixed in 1.6.8

Description

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.

Related

Alias · CVE (1)

  • CVE-2026-116581 Seroval facilitates JavaScript value stringification, including complex structures beyond JSON.stringify capabilities. vulnerability

Weakness · CWE (2)

  • CWE-1284 Improper Validation of Specified Quantity in Input weakness
  • CWE-835 Loop with Unreachable Exit Condition weakness

References