{"id":"CVE-2026-123561","kind":"vulnerability","aliases":["CVE-2026-123561"],"related":[],"title":"devalue: crafted keys bypass __proto__ check in parse","description":"devalue before 5.9.3 allows malformed null-prototype object keys to bypass parse's __proto__ rejection through property-key coercion, an incomplete fix for GHSA-mwv9-gp5h-frr4. Attackers can supply crafted payloads that yield objects with a __proto__ own property, which alone does not cause prototype pollution.","summary":"devalue is a JavaScript library for serializing and parsing data, and before 5.9.3 a malformed null-prototype object key can slip past its __proto__ rejection during property-key coercion. The sources say this yields objects with an own __proto__ property, which by itself does not cause prototype pollution.","severity":"medium","cvss":6.3,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["devalue","javascript","npm","package"],"not_affected_if":["trusted-input-only"],"how_to_check":"- `npm ls devalue` to find the installed version in each project\n- Check the `devalue` version in `package-lock.json`, `pnpm-lock.yaml` or `yarn.lock`","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:25:05+00:00","updated_at":"2026-11-08T02:25:05+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-11-08T02:25:05Z","model":"claude-haiku-5-5","output":{"fix":"- devalue: move to `5.9.3` or later","reach":"unknown","title":"devalue: crafted keys bypass __proto__ check in parse","impact":"low","summary":"devalue is a JavaScript library for serializing and parsing data, and before 5.9.3 a malformed null-prototype object key can slip past its __proto__ rejection during property-key coercion. The sources say this yields objects with an own __proto__ property, which by itself does not cause prototype pollution.","audience":"developers","category":"package","nicknames":[],"who_cares":["javascript","npm","devalue"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"crafted payloads create objects with an own __proto__ property","analyst_note":"Check the linked GitHub advisory for GHSA-mwv9-gp5h-frr4 and the VulnCheck page to confirm affected input paths and whether any downstream prototype pollution is demonstrated.","how_to_check":"- `npm ls devalue` to find the installed version in each project\n- Check the `devalue` version in `package-lock.json`, `pnpm-lock.yaml` or `yarn.lock`","plain_action":"","needs_analyst":true,"not_affected_if":["trusted-input-only"],"who_is_affected":"Applications that call devalue's parse on data an outside party can supply, such as request bodies or stored payloads, are the ones that matter. Projects that only serialize trusted data or never parse untrusted input are less exposed. The sources do not describe a specific downstream exploit path beyond the bypass itself.","user_interaction":"unknown","needs_special_setup":"unknown","severity_if_unknown":"unknown"},"cost_usd":0.00072,"input_tokens":4284,"output_tokens":584,"severity_before":"medium"},"analyst_status":null,"analyst_note":null,"search":"'-123561':11A,14A '-2026':10A,13A '5.9.3':31B,71C 'allow':72C 'alon':113C 'attack':99C 'bypass':4A,80C 'caus':66B,116C 'check':6A 'coercion':49B,89C 'craft':2A,102C 'cve':9A,12A 'data':28B 'devalu':1A,15B,19B,69C 'fix':92C 'frr4':98C 'ghsa':95C 'ghsa-mwv9-gp5h-frr4':94C 'gp5h':97C 'incomplet':91C 'javascript':16B,22B 'key':3A,38B,48B,78C,88C 'librari':23B 'malform':33B,73C 'mwv9':96C 'npm':17B 'null':35B,75C 'null-prototyp':34B,74C 'object':37B,55B,77C,106C 'packag':18B 'pars':8A,27B,81C 'past':41B 'payload':103C 'pollut':68B,118C 'properti':47B,60B,87C,111C 'property-key':46B,86C 'proto':5A,43B,59B,83C,109C 'prototyp':36B,67B,76C,117C 'reject':44B,84C 'say':52B 'serial':25B 'slip':40B 'sourc':51B 'suppli':101C 'yield':54B,105C","nicknames":[],"mitigations":[],"who_affected":"Applications that call devalue's parse on data an outside party can supply, such as request bodies or stored payloads, are the ones that matter. Projects that only serialize trusted data or never parse untrusted input are less exposed. The sources do not describe a specific downstream exploit path beyond the bypass itself.","tier":"C","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"pkeys":[],"ptokens":[],"labels":["devalue","javascript","medium","npm","package"],"campaign_type":null,"search_a":"'-123561':11A,14A '-2026':10A,13A 'bypass':4A 'check':6A 'craft':2A 'cve':9A,12A 'devalu':1A 'key':3A 'pars':8A 'proto':5A","search_b":"'5.9.3':31B 'caus':66B 'coercion':49B 'data':28B 'devalu':15B,19B 'javascript':16B,22B 'key':38B,48B 'librari':23B 'malform':33B 'npm':17B 'null':35B 'null-prototyp':34B 'object':37B,55B 'packag':18B 'pars':27B 'past':41B 'pollut':68B 'properti':47B,60B 'property-key':46B 'proto':43B,59B 'prototyp':36B,67B 'reject':44B 'say':52B 'serial':25B 'slip':40B 'sourc':51B 'yield':54B","search_c":"'5.9.3':71C 'allow':72C 'alon':113C 'attack':99C 'bypass':80C 'caus':116C 'coercion':89C 'craft':102C 'devalu':69C 'fix':92C 'frr4':98C 'ghsa':95C 'ghsa-mwv9-gp5h-frr4':94C 'gp5h':97C 'incomplet':91C 'key':78C,88C 'malform':73C 'mwv9':96C 'null':75C 'null-prototyp':74C 'object':77C,106C 'pars':81C 'payload':103C 'pollut':118C 'properti':87C,111C 'property-key':86C 'proto':83C,109C 'prototyp':76C,117C 'reject':84C 'suppli':101C 'yield':105C","first_public_at":"2026-09-18T18:39:52+00:00","kev":null,"cvss_vector":"CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:L/VA:N/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-123561","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-123561","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":99273,"url":"https://github.com/sveltejs/devalue/security/advisories/GHSA-4q55-j62x-fr9h","title":"Vendor advisory: github.com","kind":"vendor","source":"nvd","publisher":"vendor","text":null,"published_at":"2026-09-18T18:39:52+00:00","relation":"advisory","confidence":null,"note":"Vendor advisory: github.com"},{"id":99274,"url":"https://www.vulncheck.com/advisories/sveltejs-devalue-before-5.9.3-proto-rejection-bypass-via-property-key-coercion","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"}