devalue

Ecosystem: npm

Downloads:

Vulnerabilities from the last (months)
  • 0CriticalAffects 0 versions
  • 8HighAffects 8 versions
  • 0MediumAffects 0 versions
  • 4ModerateAffects 4 versions
  • 4LowAffects 4 versions
Severity distribution (all time)
16vulnerabilities
  • 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.

Vulnerabilities affecting devalue
IDSeveritySummaryAffected versionsPublishedSource
GHSA-4q55-j62x-fr9hModeratedevalue: 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.
  • < 5.9.3
GitHub (opens in a new tab)
GHSA-hx4r-w6wj-j8fgModeratedevalue: 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.
  • < 5.9.3
GitHub (opens in a new tab)
GHSA-j22f-vq7h-c4qmHighdevalue: `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
  • >= 5.1.0, < 5.9.3
GitHub (opens in a new tab)
GHSA-mcm9-63f2-9j32Highdevalue: 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.
  • < 5.9.3
GitHub (opens in a new tab)
GHSA-r9w8-h9r3-54w4Highdevalue: 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.
  • < 5.9.3
GitHub (opens in a new tab)
GHSA-wf3x-273g-mvxvLowdevalue: 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.
  • >= 1.0.0, < 5.9.3
GitHub (opens in a new tab)
GHSA-x5rw-q4pp-hg5gHighdevalue: 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.
  • >= 5.8.0, < 5.9.3
GitHub (opens in a new tab)
GHSA-9rgm-9g3h-6x36ModerateSvelte 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`.
  • < 5.9.2
GitHub (opens in a new tab)
GHSA-77vg-94rm-hx3pHighSvelte 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.
  • >= 5.6.3, < 5.8.1
GitHub (opens in a new tab)
GHSA-cfw5-2vxh-hr84Moderatedevalue 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.
  • < 5.6.4
GitHub (opens in a new tab)
  • GHSA-4q55-j62x-fr9hModerate
    devalue: 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-j8fgModerate
    devalue: 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-c4qmHigh
    devalue: `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-9j32High
    devalue: 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-54w4High
    devalue: 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-mvxvLow
    devalue: 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-hg5gHigh
    devalue: 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-6x36Moderate
    Svelte 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-hx3pHigh
    Svelte 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-hr84Moderate
    devalue 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

Showing 1-10 of 16 vulnerabilities