---
title: "CVE-2026-104846: Seroval: `fromJSON()` Promise thenable assimilation invokes plugin-produced callables (bypass of GHSA-mv8w-475r-vwqw)"
url: https://erroneo.us/security/cve/CVE-2026-104846/
description: "CVE-2026-104846 (seroval (npm)): Seroval facilitates JS value stringification, including complex structures beyond JSON.stringify capabilities. From 0.12.0…"
type: vulnerability-record
section: "Security Digest"
date_published: 2026-10-02
date_modified: 2026-10-05
publisher: erroneo.us
author: erroneo.us Security Desk
cve: "CVE-2026-104846"
kev: false
cvss: 9.8
epss: 0.00345
license: All rights reserved. Quote with attribution and a link.
---

# CVE-2026-104846: Seroval: `fromJSON()` Promise thenable assimilation invokes plugin-produced callables (bypass of GHSA-mv8w-475r-vwqw)

**Signal:** Critical and remotely reachable. No known exploitation yet, but it is network-reachable without credentials. (Computed from CISA KEV, EPSS and CVSS; not an editorial verdict.)

## Should you act?

- No confirmed exploitation. It is not in CISA’s KEV catalog and CISA’s SSVC assessment records no known exploitation. That can change quickly after a public write-up; re-check if you are affected.
- EPSS 0.3% , percentile 27: FIRST’s model estimates a 0.3% chance of exploitation activity in the next 30 days, higher than 27% of all scored CVEs (low). EPSS is a probability, not a verdict.
- Remotely reachable with no login and no user interaction. If the vulnerable service is exposed to the internet, prioritize it.
- Only applies if your dependency tree includes seroval (npm) >= 0.12.0, <= 1.6.0, fixed in 1.6.2 . Check your lockfile, including transitive dependencies.

## What it is

Seroval facilitates JS value stringification, including complex structures beyond JSON.stringify capabilities. From 0.12.0 until 1.6.2, fromJSON deserialization of a fulfilled Promise control node can pass a plugin-produced callable-bearing thenable to a native Promise resolver. ECMAScript thenable assimilation then invokes the callable unexpectedly, allowing attacker-controlled JSON to trigger code in applications using plugin-capable Seroval releases. This path bypasses the Promise resolver type-confusion remediation in version 1.5.3 for CVE-2026-59940 because the unexpected invocation occurs through native Promise settlement after the referenced value is deserialized. This issue is fixed in version 1.6.2.

## Affected packages

- npm `seroval` >= 0.12.0, <= 1.6.0 → fixed: 1.6.2

## Affected products (CVE record)

- lxsmnsyc seroval: >= 0.12.0, < 1.6.2

## Severity

- GitHub_M CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`
- GitHub CVSS 3.1: 9.8 `CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:H/A:H`

## Exploitation

- CISA KEV: not listed (no confirmed in-the-wild exploitation known to CISA).
- CISA SSVC assessment: exploitation none , automatable yes , technical impact total .
- FIRST EPSS (model of 2026-10-21): 0.34% probability of exploitation activity in the next 30 days; percentile 27.

## Sources

- [GitHub Advisory GHSA-p6vx-979v-rg4c](https://github.com/advisories/GHSA-p6vx-979v-rg4c)
- [CVE.org record CVE-2026-104846](https://www.cve.org/CVERecord?id=CVE-2026-104846)
- [NVD entry CVE-2026-104846](https://nvd.nist.gov/vuln/detail/CVE-2026-104846)
- [github.com](https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-p6vx-979v-rg4c)
- [github.com](https://github.com/lxsmnsyc/seroval/commit/f1ffcc96d259f9b5b3d71feb262b58240c90e7b7)

---
Source page: https://erroneo.us/security/cve/CVE-2026-104846/ · Security Digest: https://erroneo.us/security/ · More: https://erroneo.us/llms.txt
