Repository navigation
chore(deps): update dependency devalue to ^5.9.4 [security] - #3997
Open
renovate[bot] wants to merge 1 commit into
Open
renovate[bot] wants to merge 1 commit into
renovate[bot] wants to merge 1 commit into
Conversation
✅ Deploy Preview for brilliant-pasca-3e80ec canceled.
|
🚀 Performance Test ResultsTest Configuration:
Test Metrics:
📜 Logs |
renovate
Bot
force-pushed
the
renovate-npm-devalue-vulnerability
branch
from
October 28, 2026 11:54
9e2fb6c to
4f517cb
Compare
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
This PR contains the following updates:
^5.8.1→^5.9.4devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promise
GHSA-x5rw-q4pp-hg5g
More information
Details
When serializing multiple promises, a later promise can reject before an earlier one settles. An internal rejected promise remains unhandled even if the caller catches the returned
stringifyAsyncpromise. Under Node's default unhandled-rejection behavior this can terminate the process. Applications whose asynchronous failures/timing can be influenced by requests are potentially exposed.This is essentially impossible to exploit, and is much more likely to surface as a developer-introduced bug.
Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue:
stringify/unevalserialize shared memoryCVE-2026-92708 / GHSA-j22f-vq7h-c4qm
More information
Details
Impact
stringifyandunevalserialize a typed array by emitting its backingArrayBuffer, not just the view. In the case of a NodeBufferobject, the backing buffer is a process-wide shared pool, meaning unrelated memory can be serialized into a response that is then sent to the client. For a NodeBufferthe backing store is Node's process-wide shared pool, so serializing a smallBuffercopies up to 64 KB of unrelated process memory — including bytes from other in-flight requests — into the output. In an SSR framework (SvelteKit, Nuxt) a public page whoseload()returns a 2-byteBuffer, or a small file read withreadFileSync, ships another user's request body /Authorizationheader in its HTML. Unauthenticated, silent, ~43,000× amplification.This is serialization-side, so the
parse/unflattenprototype-pollution and DoS guards do not apply — it fires on every SSR render, not only when parsing untrusted input.Workarounds
Convert Node
Bufferobjects toUint8Array:payload = { - buffer + buffer: new Uint8Array(buffer) }Severity
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue: Custom ArrayBuffer revivers can bypass typed-array allocation validation
GHSA-r9w8-h9r3-54w4
More information
Details
Under very specific circumstances,
parsecould create massive ArrayBuffers with very small input. This required a malformedArrayBuffercustom reviver.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue: Malformed null-prototype object keys bypass proto rejection via property-key coercion
GHSA-4q55-j62x-fr9h
More information
Details
This is another instance of GHSA-mwv9-gp5h-frr4, where some payloads could cause
parseto create objects with a__proto__own property. This on its own is not enough to cause prototype pollution, and indeed this is actually howJSON.parseworks, but we decided to be a little more defensive here and not allow the creation of objects with__proto__own-properties. It is very unlikely for this to cause any issues.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:N/SI:L/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue: Sparse arrays emitted by uneval cause eager allocation when evaluated
GHSA-wf3x-273g-mvxv
More information
Details
Evaluating legitimate
unevaloutput for a sparse array can allocate memory proportional to its declared length. A tiny serialized value can therefore cause large memory allocation in a consuming browser/runtime. This occurs during evaluation of generated code, not in defaultparsesparse-array construction.You would only be affected by this if you were serializing very large sparse arrays and then evaluating the results. In the general use case for
unevalof sending data to the client, the worst that could happen is the browser tab running out of memory.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:P/VC:N/VI:N/VA:N/SC:N/SI:N/SA:LReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue: Repeated primitive strings cause quadratic expansion in uneval
GHSA-mcm9-63f2-9j32
More information
Details
Under very constrained circumstances, data that was
parsed and then passed tounevalcould turn a small payload into a very large serialized string.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
devalue: Residual sparse-array CPU amplification in uneval
GHSA-hx4r-w6wj-j8fg
More information
Details
unevalperforms synchronous work proportional to a sparse array's declared length. An application that passes attacker-influenced sparse values tounevalcan suffer event-loop blocking. Since attacker-controlled creation of sparse arrays is so difficult, this vulnerability is very difficult to exploit.Severity
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:N/VI:N/VA:L/SC:N/SI:N/SA:NReferences
This data is provided by the GitHub Advisory Database (CC-BY 4.0).
Release Notes
sveltejs/devalue (devalue)
v5.9.4Compare Source
Patch Changes
067b125: perf: annotate module-levelObject.freezecalls as pure so unused operation tables tree-shakev5.9.3Compare Source
Patch Changes
6861dbb: fix: avoid scanning sparse array holes inunevaltraversal and shared-array population9ec5130: fix: reject non-string null-prototype object keys inparseandunflattento prevent bypassing the__proto__checkdae8153: fix: prevent unhandled internal rejections instringifyAsyncwhen serializing multiple promises84f6f67: fix: prevent quadraticunevaloutput expansion for repeated strings and bigints6861dbb: fix: avoid eager allocation when evaluating sparse arrays emitted byuneval8f8d78e: fix: validate revived backing buffers before constructing typed arrays46dc877: fix: serialize only the visible bytes of Node Buffers instringify,stringifyAsyncanduneval, preventing disclosure of unrelated data from their shared allocation poolv5.9.2Compare Source
Patch Changes
8b2a456: fix: reject out-of-bounds indicesv5.9.1Compare Source
Patch Changes
39457ce: fix:unevalemits valid JS for graphs with more than 65534 repeated references686e379: fix: emit valid JS for NodeBufferinuneval376b65c: fix: preserve-0in float typed arrays inunevalv5.9.0Compare Source
Minor Changes
07d6a38: feat: exportfilterArrayIndices, the array-index filtering used by theindicesOfstringify operation, so custom operations can reuse it instead of reimplementing it07d6a38: feat: add pluggableoperationsoption toparse/unflatten, allowing customization of how values are constructed while reviving (e.g. cross-realm or foreign-runtime revival)5b53532: feat: add pluggableoperationsoption tostringify/stringifyAsync, allowing customization of how values are introspected during serialization (e.g. side-effect-free or foreign-runtime serialization)v5.8.2Compare Source
Patch Changes
48cc81f: fix: serialize DataView subviews with the correct byte offset and lengthcd6da94: fix: resolve circular references through custom revivers when payload is already hydrated29a3382: fix:unevalnow produces valid output for a repeated emptyMaporSet8c0db06: fix: serialize Temporal values referenced more than once inuneval3770846: fix: emit valid JS forBigInt64ArrayandBigUint64Arrayinuneval756265a: fix: preserve shared-reference identity for Map keys inunevalfaa8a05: fix: emit uneval reconstructions before the statements that reference them06129ad: fix: do not grow sparse arrays by one slot in unevalConfiguration
📅 Schedule: (UTC)
🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.
♻ Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.
🔕 Ignore: Close this PR and you won't be reminded about this update again.
This PR was generated by Mend Renovate. View the repository job log.