{"id":"CVE-2026-116580","revision":null,"records":[{"revision":"30887eb3029d4b47a2715f61ac387cc4","observedAt":"2026-10-26T21:35:30.991+00:00","statement":{"source":"cve-program","id":"CVE-2026-116580","aliases":[],"title":"Seroval: Deserialization invokes attacker-chosen callables: AsyncIteratorFactoryInstance calls source.on(listener) without type check","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.","state":0,"publishedAt":"2026-10-26T20:35:49.975+00:00","modifiedAt":"2026-10-26T20:35:49.975+00:00","affected":[{"ecosystem":"Vendor product","name":"seroval","ranges":[],"versions":[],"rawVersionEvidence":"{\n                    \"vendor\": \"lxsmnsyc\",\n                    \"product\": \"seroval\",\n                    \"versions\": [\n                        {\n                            \"version\": \"< 1.6.8\",\n                            \"status\": \"affected\"\n                        }\n                    ]\n                }"}],"metrics":[{"system":"CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","score":7.3,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-7rv5-mrxv-xcr9","https://github.com/lxsmnsyc/seroval/commit/3edc78b495ea0d6bd498143e5b3e56996607c5f2","https://github.com/lxsmnsyc/seroval/commit/50926b3ee198fb757e6ce3aa70efeed38d931c8d","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-116580","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-116580","identifiers":["CVE-2026-116580"]},"retained":false,"historicalAffected":[]},{"revision":"68ce0a6e6d2745e98f401f26a7221fea","observedAt":"2026-10-28T21:57:35.826+00:00","statement":{"source":"euvd","id":"EUVD-2026-110242","aliases":["CVE-2026-116580"],"title":"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…","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.","state":0,"publishedAt":null,"modifiedAt":null,"affected":[],"metrics":[{"system":"EUVD CVSS 3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","score":7.3,"severity":null}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-7rv5-mrxv-xcr9","https://github.com/lxsmnsyc/seroval/commit/3edc78b495ea0d6bd498143e5b3e56996607c5f2","https://github.com/lxsmnsyc/seroval/commit/50926b3ee198fb757e6ce3aa70efeed38d931c8d","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-110242","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 26, 2026, 8:35:49 PM","dateUpdated":"Oct 26, 2026, 8:35:49 PM"},"relatedAdvisories":[],"note":"EUVD source date text has no stated timezone and is retained without inventing a UTC instant. Related bulletin membership is not an alias, common cause or applicability claim. A missing vector with a zero score is treated as unrated. Complete vendor/product and underlying source evidence remains in the original JSON."},"key":"euvd:EUVD-2026-110242","identifiers":["EUVD-2026-110242","CVE-2026-116580"]},"retained":false,"historicalAffected":[]},{"revision":"74e78d277c724c03b33989abc335439a","observedAt":"2026-10-28T21:57:06.789+00:00","statement":{"source":"nvd","id":"CVE-2026-116580","aliases":[],"title":"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…","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.","state":0,"publishedAt":"2026-10-26T21:18:15.523+00:00","modifiedAt":"2026-10-26T21:18:15.87+00:00","affected":[],"metrics":[{"system":"CVSS 3.1 · security-advisories@github.com · Secondary","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","score":7.3,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/commit/3edc78b495ea0d6bd498143e5b3e56996607c5f2","https://github.com/lxsmnsyc/seroval/commit/50926b3ee198fb757e6ce3aa70efeed38d931c8d","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8","https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-7rv5-mrxv-xcr9"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-116580","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Deferred","weaknesses":["CWE-502"],"productCriteria":[],"sourceDates":{"published":"2026-10-26T21:18:15.523","lastModified":"2026-10-26T21:18:15.870"},"relatedAdvisories":[],"note":"NVD analysis and CPE criteria are source context, not proof that a package or your environment is affected. Complete affected data, logical configurations and SSVC are retained in the original JSON."},"key":"nvd:CVE-2026-116580","identifiers":["CVE-2026-116580"]},"retained":false,"historicalAffected":[]},{"revision":"fa9d66217e3443dea21079af9ecf2aaf","observedAt":"2026-10-28T21:55:29.474+00:00","statement":{"source":"osv","id":"GHSA-7rv5-mrxv-xcr9","aliases":["CVE-2026-116580"],"title":"Seroval: Deserialization invokes attacker-chosen callables: AsyncIteratorFactoryInstance calls source.on(listener) without type check","description":"### Summary\n\nWhen `fromJSON` rebuilt an async iterator, it called `on()` on the iterator's source without checking that the source was a seroval stream. A crafted payload could pick another value as the source, such as a function returned by an application plugin. The deserializer then called that value's `on` method.\n\nThis is a variant of GHSA-mv8w-475r-vwqw. That fix covered the promise and stream control nodes but not the async iterator node.\n\n### Impact\n\nAn application that passes untrusted input to `fromJSON` with plugins that return callable values can have those callables invoked during deserialization. What this allows depends on what the plugin's values do.\n\n### Affected versions\n\n- Versions up to 1.6.3 accept any value as the source.\n- 1.6.4 rejects the reported payload.\n- 1.6.5 to 1.6.7 check the source by node type, which a payload can get around by reusing a node id.\n- All versions up to 1.6.7 should be treated as affected.\n\n### Patches\n\nFixed in `seroval@1.6.8`. Streams and sequences are now internal class instances. The deserializer checks the source value with `instanceof`, so plain data and plugin values are rejected no matter which node id they use.\n\n### Workarounds\n\nAvoid plugins whose `deserialize` returns functions or objects with an `on` method when decoding untrusted input. Upgrading to 1.6.8 is recommended.","state":0,"publishedAt":"2026-10-28T21:17:15+00:00","modifiedAt":"2026-10-28T21:30:03.8993484+00:00","affected":[{"ecosystem":"npm","name":"seroval","ranges":[{"type":"SEMVER","events":[{"kind":"introduced","version":"0"},{"kind":"fixed","version":"1.6.8"}]}],"versions":[],"rawVersionEvidence":null}],"metrics":[{"system":"CVSS_V3","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:L/A:L","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-7rv5-mrxv-xcr9","https://nvd.nist.gov/vuln/detail/CVE-2026-116580","https://github.com/lxsmnsyc/seroval/commit/3edc78b495ea0d6bd498143e5b3e56996607c5f2","https://github.com/lxsmnsyc/seroval/commit/50926b3ee198fb757e6ce3aa70efeed38d931c8d","https://github.com/lxsmnsyc/seroval","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://github.com/advisories/GHSA-7rv5-mrxv-xcr9","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-7rv5-mrxv-xcr9","identifiers":["GHSA-7rv5-mrxv-xcr9","CVE-2026-116580"]},"retained":false,"historicalAffected":[]}],"coverage":[{"source":"cisa-kev:global","scope":"Complete CISA KEV catalog; all vendors. Missing entries do not establish absence of exploitation.","generation":"2026-10-29T13:12:27.6929637+00:00","complete":true,"records":1762,"lastAttemptAt":"2026-10-29T13:12:27.6929637+00:00","lastSuccessAt":"2026-10-29T13:12:27.872659+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.8726608+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"cve-program","scope":"Official CVE Program baseline and cumulative hourly delta; all vendors, published and rejected records","generation":"cve-b1f3f808444d5ea9fdb7335a1abbcb8866c29481d9b152338762db9defc61d11-2b0db1fc2fa3ba6586a59a2dc11209ee8388d893f42486e4fa2d13a394458141","complete":true,"records":416389,"lastAttemptAt":"2026-10-29T13:12:27.2022042+00:00","lastSuccessAt":"2026-10-29T13:12:27.1235418+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.2022042+00:00","snapshotPublishedAt":"2026-10-29T12:32:10+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"euvd","scope":"Rolling EUVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global EUVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-cd37b1827e1d412bba4485c8e5df4b65","complete":true,"records":13494,"lastAttemptAt":"2026-10-29T13:12:55.1086675+00:00","lastSuccessAt":"2026-10-29T11:13:34.772+00:00","error":null,"lastVerifiedAt":"2026-10-29T11:13:34.772+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13575,"expectedIdentifiers":13575,"failedIdentifiers":0},{"source":"first-epss:nuget","scope":"FIRST EPSS for explicit CVE aliases in the collected public NuGet archive. Not a global EPSS backfill.","generation":"2026-10-29T13:12:27.6929637+00:00","complete":true,"records":1094,"lastAttemptAt":"2026-10-29T13:12:27.6929637+00:00","lastSuccessAt":"2026-10-29T13:12:27.873393+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.8733933+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"nvd","scope":"Rolling NVD lookups of CVE aliases in current public OSV archives; 500 identifiers per refresh, rechecked after 48 hours. Not a global NVD catalog. Successful not-found lookups count as checked; they do not imply withdrawal or safety. No reader inventory is sent.","generation":"enrichment-c5afbca2b0584e2fa1e8883a2d14b08c","complete":true,"records":13509,"lastAttemptAt":"2026-10-29T13:12:54.5268214+00:00","lastSuccessAt":"2026-10-29T13:12:54.524+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:54.524+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13575,"expectedIdentifiers":13575,"failedIdentifiers":0},{"source":"osv:Go","scope":"Complete OSV Go ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"go-41e21be3658c34a89d9e16eb23fe7a953e9e02d74e222d2a84bc7ad0e7d98148","complete":true,"records":9804,"lastAttemptAt":"2026-10-29T13:12:27.5530014+00:00","lastSuccessAt":"2026-10-29T11:13:01.9175891+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.5530014+00:00","snapshotPublishedAt":"2026-10-29T11:03:09+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:NuGet","scope":"Complete OSV NuGet ecosystem archive, including GitHub Advisory Database records; NuGet version matching only","generation":"nuget-2de9ccc5290f060c7aa63f89c25dd76f655a64ba1aba7c05c97fa3bee4f09899","complete":true,"records":1967,"lastAttemptAt":"2026-10-29T13:12:27.3481446+00:00","lastSuccessAt":"2026-10-28T20:55:34.2982937+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.3481446+00:00","snapshotPublishedAt":"2026-10-28T20:03:08+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:crates.io","scope":"Complete OSV crates.io ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"crates.io-6faa769d1d93e2668e71457ca93cbd81eaf5d7c9fa7e90e75e410984ddbc92e3","complete":true,"records":3004,"lastAttemptAt":"2026-10-29T13:12:27.6551033+00:00","lastSuccessAt":"2026-10-29T11:13:06.512177+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.6551033+00:00","snapshotPublishedAt":"2026-10-29T11:03:09+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null},{"source":"osv:npm","scope":"Complete OSV npm ecosystem archive, including withdrawn and malicious-package source records; statement counts are not unique CVE counts","generation":"npm-a5e6535632a56ded6bf8752ba8c6547c357f7a4c5f2c0a00d86d0006ae01b7ba","complete":true,"records":230915,"lastAttemptAt":"2026-10-29T13:12:27.4507065+00:00","lastSuccessAt":"2026-10-29T10:53:04.8884483+00:00","error":null,"lastVerifiedAt":"2026-10-29T13:12:27.4507065+00:00","snapshotPublishedAt":"2026-10-29T10:33:18+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}