devalue
Ecosystem: npm
Downloads:
- 0CriticalAffects 0 versions
- 8HighAffects 8 versions
- 0MediumAffects 0 versions
- 4ModerateAffects 4 versions
- 4LowAffects 4 versions
- Critical0 (0.0%)
- High8 (50.0%)
- Medium0 (0.0%)
- Moderate4 (25.0%)
- Low4 (25.0%)
Monthly breakdown
- Critical
- High
- Medium
- Moderate
- Low
- 7 vulnerabilities
- Critical: 0
- High: 4
- Medium: 0
- Moderate: 2
- Low: 1
- 1 vulnerabilities
- Critical: 0
- High: 0
- Medium: 0
- Moderate: 1
- Low: 0
- 1 vulnerabilities
- Critical: 0
- High: 1
- Medium: 0
- Moderate: 0
- Low: 0
- 2 vulnerabilities
- Critical: 0
- High: 0
- Medium: 0
- Moderate: 1
- Low: 1
- 2 vulnerabilities
- Critical: 0
- High: 0
- Medium: 0
- Moderate: 0
- Low: 2
- 2 vulnerabilities
- Critical: 0
- High: 2
- Medium: 0
- Moderate: 0
- Low: 0
- 1 vulnerabilities
- Critical: 0
- High: 1
- Medium: 0
- Moderate: 0
- Low: 0
Vulnerabilities (16)
Known vulnerabilities affecting devalue, based on data from OSV.
| ID | Severity | Summary | Affected versions | Published | Source |
|---|---|---|---|---|---|
| GHSA-4q55-j62x-fr9h | Moderate | devalue: Malformed null-prototype object keys bypass __proto__ rejection via property-key coercionThis is another instance of https://github.com/sveltejs/devalue/security/advisories/GHSA-mwv9-gp5h-frr4, where some payloads could cause `parse` to create objects with a `__proto__` own property. This on its own is not enough to cause prototype pollution, and indeed this is actually how `JSON.parse` works, 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. |
| GitHub (opens in a new tab) | |
| GHSA-hx4r-w6wj-j8fg | Moderate | devalue: Residual sparse-array CPU amplification in uneval`uneval` performs synchronous work proportional to a sparse array's declared length. An application that passes attacker-influenced sparse values to `uneval` can suffer event-loop blocking. Since attacker-controlled creation of sparse arrays is so difficult, this vulnerability is very difficult to exploit. |
| GitHub (opens in a new tab) | |
| GHSA-j22f-vq7h-c4qm | High | devalue: `stringify`/`uneval` serialize shared memory### Impact `stringify` and `uneval` serialize a typed array by emitting its backing `ArrayBuffer`, not just the view. In the case of a Node `Buffer` object, 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 Node `Buffer` the backing store is Node's **process-wide shared pool**, so serializing a small `Buffer` copies 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 whose `load()` returns a |
| GitHub (opens in a new tab) | |
| GHSA-mcm9-63f2-9j32 | High | devalue: Repeated primitive strings cause quadratic expansion in unevalUnder very constrained circumstances, data that was `parse`d and then passed to `uneval` could turn a small payload into a very large serialized string. |
| GitHub (opens in a new tab) | |
| GHSA-r9w8-h9r3-54w4 | High | devalue: Custom ArrayBuffer revivers can bypass typed-array allocation validationUnder very specific circumstances, `parse` could create massive ArrayBuffers with very small input. This required a malformed `ArrayBuffer` custom reviver. |
| GitHub (opens in a new tab) | |
| GHSA-wf3x-273g-mvxv | Low | devalue: Sparse arrays emitted by uneval cause eager allocation when evaluatedEvaluating legitimate `uneval` output 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 default `parse` sparse-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 `uneval` of sending data to the client, the worst that could happen is the browser tab running out of memory. |
| GitHub (opens in a new tab) | |
| GHSA-x5rw-q4pp-hg5g | High | devalue: stringifyAsync can cause an unhandled rejection despite a caught returned promiseWhen 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 `stringifyAsync` promise. 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. |
| GitHub (opens in a new tab) | |
| GHSA-9rgm-9g3h-6x36 | Moderate | Svelte devalue: DoS via malformed input### Impact `devalue.parse` prior to version 5.9.2 fails to reject out-of-bounds indices. Specially-crafted payloads can exploit this to cause devalue to alternate between different array representations, resulting in work that is quadratic with payload size. Applications are potentially affected if they call `devalue.parse` with untrusted data. ### Patches The bug is fixed in `devalue@5.9.2`. |
| GitHub (opens in a new tab) | |
| GHSA-77vg-94rm-hx3p | High | Svelte devalue: DoS via sparse array deserialization`devalue.parse` could, due to quirks in some JavaScript engines, be convinced to allocate much more memory than was needed when deserializing sparse arrays, leading to excessive memory consumption. |
| GitHub (opens in a new tab) | |
| GHSA-cfw5-2vxh-hr84 | Moderate | devalue has prototype pollution in devalue.parse and devalue.unflattenIn devalue v5.6.3, `devalue.parse` and `devalue.unflatten` were susceptible to prototype pollution via maliciously crafted payloads. Successful exploitation could lead to Denial of Service (DoS) or type confusion. |
| GitHub (opens in a new tab) |
- GHSA-4q55-j62x-fr9hModeratedevalue: Malformed null-prototype object keys bypass __proto__ rejection via property-key coercion
< 5.9.3
This is another instance of https://github.com/sveltejs/devalue/security/advisories/GHSA-mwv9-gp5h-frr4, where some payloads could cause `parse` to create objects with a `__proto__` own property. This on its own is not enough to cause prototype pollution, and indeed this is actually how `JSON.parse` works, 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.
CVE: CVE-2026-123561
- GHSA-hx4r-w6wj-j8fgModeratedevalue: Residual sparse-array CPU amplification in uneval
< 5.9.3
`uneval` performs synchronous work proportional to a sparse array's declared length. An application that passes attacker-influenced sparse values to `uneval` can suffer event-loop blocking. Since attacker-controlled creation of sparse arrays is so difficult, this vulnerability is very difficult to exploit.
CVE: CVE-2026-123566
- GHSA-j22f-vq7h-c4qmHighdevalue: `stringify`/`uneval` serialize shared memory
>= 5.1.0, < 5.9.3
### Impact `stringify` and `uneval` serialize a typed array by emitting its backing `ArrayBuffer`, not just the view. In the case of a Node `Buffer` object, 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 Node `Buffer` the backing store is Node's **process-wide shared pool**, so serializing a small `Buffer` copies 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 whose `load()` returns a
CVE: CVE-2026-92708
- GHSA-mcm9-63f2-9j32Highdevalue: Repeated primitive strings cause quadratic expansion in uneval
< 5.9.3
Under very constrained circumstances, data that was `parse`d and then passed to `uneval` could turn a small payload into a very large serialized string.
CVE: CVE-2026-123565
- GHSA-r9w8-h9r3-54w4Highdevalue: Custom ArrayBuffer revivers can bypass typed-array allocation validation
< 5.9.3
Under very specific circumstances, `parse` could create massive ArrayBuffers with very small input. This required a malformed `ArrayBuffer` custom reviver.
CVE: CVE-2026-123563
- GHSA-wf3x-273g-mvxvLowdevalue: Sparse arrays emitted by uneval cause eager allocation when evaluated
>= 1.0.0, < 5.9.3
Evaluating legitimate `uneval` output 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 default `parse` sparse-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 `uneval` of sending data to the client, the worst that could happen is the browser tab running out of memory.
CVE: CVE-2026-123564
- GHSA-x5rw-q4pp-hg5gHighdevalue: stringifyAsync can cause an unhandled rejection despite a caught returned promise
>= 5.8.0, < 5.9.3
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 `stringifyAsync` promise. 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.
CVE: CVE-2026-123562
- GHSA-9rgm-9g3h-6x36ModerateSvelte devalue: DoS via malformed input
< 5.9.2
### Impact `devalue.parse` prior to version 5.9.2 fails to reject out-of-bounds indices. Specially-crafted payloads can exploit this to cause devalue to alternate between different array representations, resulting in work that is quadratic with payload size. Applications are potentially affected if they call `devalue.parse` with untrusted data. ### Patches The bug is fixed in `devalue@5.9.2`.
CVE: CVE-2026-81176
- GHSA-77vg-94rm-hx3pHighSvelte devalue: DoS via sparse array deserialization
>= 5.6.3, < 5.8.1
`devalue.parse` could, due to quirks in some JavaScript engines, be convinced to allocate much more memory than was needed when deserializing sparse arrays, leading to excessive memory consumption.
CVE: CVE-2026-42570
- GHSA-cfw5-2vxh-hr84Moderatedevalue has prototype pollution in devalue.parse and devalue.unflatten
< 5.6.4
In devalue v5.6.3, `devalue.parse` and `devalue.unflatten` were susceptible to prototype pollution via maliciously crafted payloads. Successful exploitation could lead to Denial of Service (DoS) or type confusion.
CVE: CVE-2026-30226