{"id":"CVE-2026-116581","revision":null,"records":[{"revision":"5aa2cc4c4efe43f3bcc0c761f1f150b8","observedAt":"2026-10-26T21:35:30.991+00:00","statement":{"source":"cve-program","id":"CVE-2026-116581","aliases":[],"title":"Seroval: fromJSON deserializer trusts sequence doneAt (unauthenticated event-loop DoS)","description":"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.","state":0,"publishedAt":"2026-10-26T20:41:52.905+00:00","modifiedAt":"2026-10-26T20:41:52.905+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:N/I:N/A:H","score":7.5,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-97r2-qh9m-474h","https://github.com/lxsmnsyc/seroval/commit/e176f9267e59ddd6c9de89cc9fe85c5b37a5b728","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://www.cve.org/CVERecord?id=CVE-2026-116581","license":"CVE Program Terms of Use","key":"cve-program:CVE-2026-116581","identifiers":["CVE-2026-116581"]},"retained":false,"historicalAffected":[]},{"revision":"340d28cc3a03458bac8bccf7be2c06c1","observedAt":"2026-10-28T21:57:36.957+00:00","statement":{"source":"euvd","id":"EUVD-2026-110367","aliases":["CVE-2026-116581"],"title":"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 …","description":"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.","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:N/I:N/A:H","score":7.5,"severity":null}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-97r2-qh9m-474h","https://github.com/lxsmnsyc/seroval/commit/e176f9267e59ddd6c9de89cc9fe85c5b37a5b728","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://euvd.enisa.europa.eu/vulnerability/EUVD-2026-110367","license":"ENISA EUVD · source terms and attribution apply","enrichment":{"sourceStatus":null,"weaknesses":[],"productCriteria":[],"sourceDates":{"datePublished":"Oct 26, 2026, 8:41:52 PM","dateUpdated":"Oct 26, 2026, 8:41:52 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-110367","identifiers":["EUVD-2026-110367","CVE-2026-116581"]},"retained":false,"historicalAffected":[]},{"revision":"196007669351492cb1f19d814f51a060","observedAt":"2026-10-28T21:57:06.789+00:00","statement":{"source":"nvd","id":"CVE-2026-116581","aliases":[],"title":"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 …","description":"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.","state":0,"publishedAt":"2026-10-26T21:18:15.903+00:00","modifiedAt":"2026-10-26T21:18:16.233+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:N/I:N/A:H","score":7.5,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/commit/e176f9267e59ddd6c9de89cc9fe85c5b37a5b728","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8","https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-97r2-qh9m-474h"],"sourceUrl":"https://nvd.nist.gov/vuln/detail/CVE-2026-116581","license":"NIST NVD usage terms; underlying source attribution retained","enrichment":{"sourceStatus":"Deferred","weaknesses":["CWE-835","CWE-1284"],"productCriteria":[],"sourceDates":{"published":"2026-10-26T21:18:15.903","lastModified":"2026-10-26T21:18:16.233"},"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-116581","identifiers":["CVE-2026-116581"]},"retained":false,"historicalAffected":[]},{"revision":"333005bd221e40e4aca442722ab8e550","observedAt":"2026-10-28T21:55:29.474+00:00","statement":{"source":"osv","id":"GHSA-97r2-qh9m-474h","aliases":["CVE-2026-116581"],"title":"Seroval: fromJSON deserializer trusts node-supplied array length and sequence doneAt (unauthenticated event-loop DoS)","description":"### Summary\n\n`fromJSON` and `fromCrossJSON` used two node fields without checking them.\n\n- 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.\n- A sequence node's done index was not checked. A crafted value produced an iterator that never finished.\n\n### Impact\n\nA service that passes untrusted input to `fromJSON` or `fromCrossJSON` can be made unavailable by an unauthenticated request.\n\n- The array case blocks the thread while the decoder runs.\n- The sequence case makes any code that reads the resulting iterator to the end run forever.\n\n### Patches\n\nFixed in `seroval@1.6.8`.\n\n- Element lists must be arrays.\n- A sequence node's throw and done indices must be integers from -1 up to the last element index.\n\nInvalid input throws `SerovalMalformedNodeError`.\n\n### Workarounds\n\nNone. Upgrade to 1.6.8.","state":0,"publishedAt":"2026-10-28T21:17:27+00:00","modifiedAt":"2026-10-28T21:30:06.7995772+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:N/I:N/A:H","score":null,"severity":null},{"system":"Publisher rating","vector":null,"score":null,"severity":"HIGH"}],"references":["https://github.com/lxsmnsyc/seroval/security/advisories/GHSA-97r2-qh9m-474h","https://nvd.nist.gov/vuln/detail/CVE-2026-116581","https://github.com/lxsmnsyc/seroval/commit/cdcee3e3bc384ee844360844f8ea98fd2b275d69","https://github.com/lxsmnsyc/seroval/commit/e176f9267e59ddd6c9de89cc9fe85c5b37a5b728","https://github.com/lxsmnsyc/seroval","https://github.com/lxsmnsyc/seroval/releases/tag/seroval@1.6.8"],"sourceUrl":"https://github.com/advisories/GHSA-97r2-qh9m-474h","license":"GitHub Advisory Database · CC-BY-4.0","key":"osv:GHSA-97r2-qh9m-474h","identifiers":["GHSA-97r2-qh9m-474h","CVE-2026-116581"]},"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-29T02:25:08.6934336+00:00","complete":true,"records":1762,"lastAttemptAt":"2026-10-29T02:25:08.6934336+00:00","lastSuccessAt":"2026-10-29T02:25:08.8498347+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.8498363+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-d1a428bf777c3675b36241a074cccd0f75331e2d23709605377b35b3162092d0","complete":true,"records":416268,"lastAttemptAt":"2026-10-29T02:25:08.240107+00:00","lastSuccessAt":"2026-10-29T01:25:47.5553697+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.240107+00:00","snapshotPublishedAt":"2026-10-29T01:24:35+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-67c45d88603142628ffcfa8b1ca943fa","complete":true,"records":13492,"lastAttemptAt":"2026-10-29T02:25:10.848404+00:00","lastSuccessAt":"2026-10-28T23:57:54.417+00:00","error":null,"lastVerifiedAt":"2026-10-28T23:57:54.417+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13573,"expectedIdentifiers":13573,"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-29T02:25:08.6934336+00:00","complete":true,"records":1094,"lastAttemptAt":"2026-10-29T02:25:08.6934336+00:00","lastSuccessAt":"2026-10-29T02:25:08.8509257+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.8509295+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-86f522388b154d94a226041131458ea8","complete":true,"records":13507,"lastAttemptAt":"2026-10-29T02:25:10.3117331+00:00","lastSuccessAt":"2026-10-29T02:25:10.308+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:10.308+00:00","snapshotPublishedAt":null,"importing":false,"stagedRecords":0,"checkedIdentifiers":13573,"expectedIdentifiers":13573,"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-fc959b29ab508e2a816420caaa356e6d36e5d24778ebe897e047b2d9f7a859ea","complete":true,"records":9804,"lastAttemptAt":"2026-10-29T02:25:08.5070051+00:00","lastSuccessAt":"2026-10-28T21:57:04.9293356+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.5070051+00:00","snapshotPublishedAt":"2026-10-28T21:33:04+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-29T02:25:08.2982851+00:00","lastSuccessAt":"2026-10-28T20:55:34.2982937+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.2982851+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-851be70fd8ecd5e92a54ae7ac7e0c1326051f9b79107b41f70cc6adc68bca050","complete":true,"records":3004,"lastAttemptAt":"2026-10-29T02:25:08.6130464+00:00","lastSuccessAt":"2026-10-28T22:55:31.7476062+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.6130464+00:00","snapshotPublishedAt":"2026-10-28T21:33:04+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-ac6a1f55c721a32b7dd01be1fa6330a64bb652cd884d4262816699d12f117ec7","complete":true,"records":230906,"lastAttemptAt":"2026-10-29T02:25:08.4065614+00:00","lastSuccessAt":"2026-10-29T01:13:07.9961563+00:00","error":null,"lastVerifiedAt":"2026-10-29T02:25:08.4065614+00:00","snapshotPublishedAt":"2026-10-29T01:03:11+00:00","importing":false,"stagedRecords":0,"checkedIdentifiers":null,"expectedIdentifiers":null,"failedIdentifiers":null}]}