{"id":"CVE-2026-123564","kind":"vulnerability","aliases":["CVE-2026-123564"],"related":[],"title":"devalue: sparse array serialization exhausts memory in browser or runtime","description":"Sveltejs devalue from 1.0.0 before 5.9.3 contains a memory exhaustion flaw in uneval, whose generated code for sparse arrays allocates memory proportional to the array's declared length when evaluated. Attackers who can influence a very large sparse array serialized by an application can exhaust memory in the browser or runtime evaluating the output.","summary":"devalue is a JavaScript library that serializes values, and its uneval output for sparse arrays allocates memory proportional to the declared array length when evaluated. An attacker who can influence a very large sparse array the application serializes can exhaust memory in the browser or runtime that evaluates the output.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["browser","javascript","node.js","package","svelte","sveltekit"],"not_affected_if":["devalue-5.9.3-or-later","no-uneval-use","trusted-input-only"],"how_to_check":"- Check the installed devalue version with `npm ls devalue` in the project.\n- Search the lockfile for `devalue` and see whether any resolved version is below `5.9.3`.\n- Look for uses of `uneval` in the application code and whether the output is evaluated.","fix":"- devalue: move to `5.9.3` or later.","status":"open","published_at":"2026-11-08T02:16:48+00:00","first_seen_at":"2026-11-08T02:21:11+00:00","triaged_at":"2026-11-08T02:23:03+00:00","updated_at":"2026-11-08T02:23:03+00:00","category":"package","confidence":0.7,"triage":{"at":"2026-11-08T02:23:03Z","model":"claude-haiku-5-5","output":{"fix":"- devalue: move to `5.9.3` or later.","reach":"unknown","title":"devalue: sparse array serialization exhausts memory in browser or runtime","impact":"medium","summary":"devalue is a JavaScript library that serializes values, and its uneval output for sparse arrays allocates memory proportional to the declared array length when evaluated. An attacker who can influence a very large sparse array the application serializes can exhaust memory in the browser or runtime that evaluates the output.","audience":"developers","category":"package","nicknames":[],"who_cares":["javascript","sveltekit","svelte","node.js","browser"],"confidence":0.7,"fix_status":"available","needs_auth":"unknown","worst_case":"memory exhaustion crashes the browser tab or runtime process","analyst_note":"","how_to_check":"- Check the installed devalue version with `npm ls devalue` in the project.\n- Search the lockfile for `devalue` and see whether any resolved version is below `5.9.3`.\n- Look for uses of `uneval` in the application code and whether the output is evaluated.","plain_action":"","needs_analyst":false,"not_affected_if":["devalue-5.9.3-or-later","no-uneval-use","trusted-input-only"],"who_is_affected":"Applications that use devalue 1.0.0 through versions before 5.9.3 and call uneval on data an outside party can influence, especially very large sparse arrays, which are then evaluated in a browser or runtime. Projects that do not use uneval or only serialize trusted data are less exposed.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000715,"input_tokens":4295,"output_tokens":570,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-123564':13A,16A '-2026':12A,15A '1.0.0':76C '5.9.3':78C 'alloc':38B,92C 'applic':59B,115C 'array':3A,37B,44B,57B,91C,97C,111C 'attack':49B,103C 'browser':8A,17B,66B,121C 'code':88C 'contain':79C 'cve':11A,14A 'declar':43B,99C 'devalu':1A,23B,74C 'evalu':47B,70B,102C,124C 'exhaust':5A,62B,82C,117C 'flaw':83C 'generat':87C 'influenc':52B,106C 'javascript':18B,26B 'larg':55B,109C 'length':45B,100C 'librari':27B 'memori':6A,39B,63B,81C,93C,118C 'node.js':19B 'output':34B,72B,126C 'packag':20B 'proport':40B,94C 'runtim':10A,68B,123C 'serial':4A,29B,60B,112C 'spars':2A,36B,56B,90C,110C 'svelt':21B 'sveltej':73C 'sveltekit':22B 'unev':33B,85C 'valu':30B 'whose':86C","nicknames":[],"mitigations":[],"who_affected":"Applications that use devalue 1.0.0 through versions before 5.9.3 and call uneval on data an outside party can influence, especially very large sparse arrays, which are then evaluated in a browser or runtime. Projects that do not use uneval or only serialize trusted data are less exposed.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["browser","high","javascript","nodejs","package","svelte","sveltekit"],"campaign_type":null,"search_a":"'-123564':13A,16A '-2026':12A,15A 'array':3A 'browser':8A 'cve':11A,14A 'devalu':1A 'exhaust':5A 'memori':6A 'runtim':10A 'serial':4A 'spars':2A","search_b":"'alloc':38B 'applic':59B 'array':37B,44B,57B 'attack':49B 'browser':17B,66B 'declar':43B 'devalu':23B 'evalu':47B,70B 'exhaust':62B 'influenc':52B 'javascript':18B,26B 'larg':55B 'length':45B 'librari':27B 'memori':39B,63B 'node.js':19B 'output':34B,72B 'packag':20B 'proport':40B 'runtim':68B 'serial':29B,60B 'spars':36B,56B 'svelt':21B 'sveltekit':22B 'unev':33B 'valu':30B","search_c":"'1.0.0':76C '5.9.3':78C 'alloc':92C 'applic':115C 'array':91C,97C,111C 'attack':103C 'browser':121C 'code':88C 'contain':79C 'declar':99C 'devalu':74C 'evalu':102C,124C 'exhaust':82C,117C 'flaw':83C 'generat':87C 'influenc':106C 'larg':109C 'length':100C 'memori':81C,93C,118C 'output':126C 'proport':94C 'runtim':123C 'serial':112C 'spars':90C,110C 'sveltej':73C 'unev':85C 'whose':86C","first_public_at":"2026-09-18T18:41:44+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"disclosure@vulncheck.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-123564","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123564","severity":null,"published_at":"2026-11-08T02:16:48+00:00","modified_at":"2026-11-08T02:16:48+00:00","first_seen_at":"2026-11-08T02:21:11+00:00","fetched_at":"2026-11-08T02:21:11+00:00","note":null}],"documents":[{"id":99279,"url":"https://github.com/sveltejs/devalue/security/advisories/GHSA-wf3x-273g-mvxv","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-09-18T18:41:44+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":99280,"url":"https://www.vulncheck.com/advisories/sveltejs-devalue-before-5.9.3-memory-exhaustion-via-uneval-sparse-arrays","title":"Third-party advisory: www.vulncheck.com","kind":"advisory","source":"nvd","publisher":"research","text":null,"published_at":null,"relation":"advisory","confidence":null,"note":"Third-party advisory: www.vulncheck.com"}],"exploit_sources":[],"notice":"Free to read, with fair use of about 60 pages a minute. For higher limits or API access: sales@infrastack.ai"}