{"id":"CVE-2026-116580","kind":"vulnerability","aliases":["CVE-2026-116580"],"related":[],"title":"Seroval: crafted input can invoke plugin-produced values during deserialization","description":"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.","summary":"Seroval is a JavaScript serializer that can rebuild complex values from text. Before version 1.6.8, a crafted input can make the deserializer call a value that an application plugin produced, so the impact depends on what that plugin exposes.","severity":"high","cvss":7.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["javascript","node","package","seroval","server-side"],"not_affected_if":["no-custom-plugins","trusted-input-only"],"how_to_check":"- `npm ls seroval` to list every installed Seroval version in the project\n- Check whether the application registers custom Seroval plugins that return callable values or objects with an `on` method\n- Check whether untrusted input reaches Seroval's `fromJSON` or deserialization path","fix":"- Upgrade Seroval to `1.6.8` or later\n- Rebuild and redeploy the application after updating the dependency","status":"open","published_at":"2026-10-26T21:18:15+00:00","first_seen_at":"2026-10-26T21:20:31+00:00","triaged_at":"2026-10-26T21:21:13+00:00","updated_at":"2026-10-26T21:21:13+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-26T21:21:13Z","model":"claude-haiku-5-5","output":{"fix":"- Upgrade Seroval to `1.6.8` or later\n- Rebuild and redeploy the application after updating the dependency","reach":"internet","title":"Seroval: crafted input can invoke plugin-produced values during deserialization","impact":"high","summary":"Seroval is a JavaScript serializer that can rebuild complex values from text. Before version 1.6.8, a crafted input can make the deserializer call a value that an application plugin produced, so the impact depends on what that plugin exposes.","category":"package","nicknames":[],"who_cares":["javascript","node","seroval","server-side"],"confidence":0.6,"needs_auth":"unknown","worst_case":"Plugin-exposed behavior runs during deserialization of attacker-crafted input","analyst_note":"Confirm from the NVD entry or the upstream Seroval advisory which plugin shapes are exploitable and whether a default configuration is affected; the sources give no exploitation status or default-config detail.","how_to_check":"- `npm ls seroval` to list every installed Seroval version in the project\n- Check whether the application registers custom Seroval plugins that return callable values or objects with an `on` method\n- Check whether untrusted input reaches Seroval's `fromJSON` or deserialization path","needs_analyst":true,"not_affected_if":["trusted-input-only","no-custom-plugins"],"who_is_affected":"Applications that deserialize untrusted Seroval input and register a plugin that returns a callable value or an object exposing an `on` method are exposed. Applications that use Seroval only on trusted data, or without such plugins, are less exposed, but the sources do not say how much less, so the upgrade is still the safe path.","user_interaction":"no","needs_special_setup":"yes","severity_if_unknown":"high"},"cost_usd":0.000651,"input_tokens":3456,"output_tokens":611,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-116580':14A,17A '-2026':13A,16A,140C '-59940':141C '1.6.8':39B,77C,164C 'applic':52B,101C,156C 'asynciteratorfactoryinst':81C 'avail':147C 'behavior':152C 'beyond':72C 'call':47B,83C 'callabl':106C 'capabl':74C 'complex':33B,70C 'confidenti':144C 'craft':2A,41B,116C 'cve':12A,15A,139C 'depend':58B,149C 'deseri':11A,46B,124C 'expos':63B,111C,153C 'facilit':65C 'fix':136C,161C 'fromjson':78C 'genuin':92C 'identifi':121C 'impact':57B,148C 'includ':69C 'incomplet':135C 'incomplete-fix':134C 'input':3A,42B,98C 'integr':145C 'intern':93C 'invok':5A,125C 'issu':159C 'javascript':18B,28B,66C 'json.stringify':73C 'listen':85C 'make':44B 'method':114C 'node':19B,117C 'object':110C 'packag':20B 'plugin':7A,53B,62B,102C,128C,157C 'plugin-produc':6A,127C 'prior':75C 'produc':8A,54B,129C 'rebuild':32B,79C 'requir':87C 'result':143C 'return':104C 'reus':119C 'serial':29B 'serov':1A,21B,25B,64C,97C 'server':23B 'server-sid':22B 'side':24B 'sourc':88C 'source.on':84C 'stream':94C 'stringif':68C 'structur':71C 'text':36B 'untrust':96C 'valu':9A,34B,49B,67C,107C,130C 'variant':137C 'version':38B,163C 'without':86C","nicknames":[],"mitigations":[],"who_affected":"Applications that deserialize untrusted Seroval input and register a plugin that returns a callable value or an object exposing an `on` method are exposed. Applications that use Seroval only on trusted data, or without such plugins, are less exposed, but the sources do not say how much less, so the upgrade is still the safe path.","tier":"B","verified":{},"analyst_revisit_at":null,"first_public_at":"2026-10-26T21:18:15+00:00","kev":null,"cvss_vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-116580","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-116580","severity":null,"published_at":"2026-10-26T21:18:15+00:00","modified_at":"2026-10-26T21:18:15+00:00","first_seen_at":"2026-10-26T21:20:31+00:00","fetched_at":"2026-10-26T21:20:31+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}