Skip to content

GHSA-j2f3-wq62-6q46 CVE-2026-22803

@sveltejs/kit has memory amplification DoS vulnerability in Remote Functions binary form deserializer (application/x-sveltekit-formdata)

High npm
Severity
0.0 / 10
High · CVSS 4.0
Exploit chance (EPSS)
0.59%
Chance of exploitation in the next 30 days. Higher than 48.21% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-789 Memory Allocation with Excessive Size Value
Fix
2.49.5
Upgrade @sveltejs/kit to this version or later

Description

Summary

The experimental form remote function uses a binary data format containing a representation of submitted form data. A specially-crafted payload can cause the server to allocate a large amount of memory, causing DoS via memory exhaustion.

Details

When a form is submitted to a remote function endpoint, the SvelteKit client encodes the data using a custom format, and POSTs it to the endpoint as a request with an application/x-sveltekit-formdata content type.

The first few bytes of the request body encode the length of the data. SvelteKit will attempt to read the request body up until the specified offset, but if the body is not yet available then an array buffer of that size will be created eagerly to accommodate it as it arrives.

An attacker can force this code path by sending a small payload that specifies a large data length, then stalling the connection. The resulting array buffer will be held in memory, potentially causing memory exhaustion.

Impact

  • Vulnerability type: Availability / memory exhaustion (memory amplification).
  • Who is impacted: SvelteKit apps with experimental.remoteFunctions enabled, and that expose a reachable Remote Form endpoint.
  • Attack: an unauthenticated attacker can repeatedly open connections, send only the 8-byte header/prefix (with large data_length), and stall the body to hold large allocations, exhausting memory.

Affected versions

npm

PackageVulnerableFixed in
@sveltejs/kit
>= 2.49.0, < 2.49.5
2.49.5

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

@sveltejs/kit npm → 2.49.5

npm
npm install @sveltejs/kit@2.49.5
yarn
yarn add @sveltejs/kit@2.49.5
pnpm
pnpm add @sveltejs/kit@2.49.5

Severity breakdown

CVSS 4.0 0.0

CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:N

Attack vector
Network
Attack complexity
Low
Attack requirements
Present
Privileges required
None
User interaction
None
Confidentiality (vulnerable system)
None
Integrity (vulnerable system)
None
Availability (vulnerable system)
High
Confidentiality (subsequent systems)
None
Integrity (subsequent systems)
None
Availability (subsequent systems)
None

CVSS 3.1 7.5

CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
None
Availability
High

Weakness

CWE-789: Memory Allocation with Excessive Size Value

The product allocates memory based on an untrusted, large size value, but it does not ensure that the size is within expected limits, allowing arbitrary amounts of memory to be allocated.

How to prevent it
  • Implementation, Architecture and Design: Perform adequate input validation against any value that influences the amount of memory that is allocated. Define an appropriate strategy for handling requests that exceed the limit, and consider supporting a configuration option so that the administrator can extend the amount of memory to be used if necessary.
  • Operation: Run your program using system-provided resource limits for memory. This might still cause the program to crash or exit, but the impact to the rest of the system will be minimized.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-27mw-82g8-phjj
SvelteKit : XSS via untrusted cache-control header in prerendered page
Low Also affects @sveltejs/kit
GHSA-pfhg-q3qv-9q6r
SvelteKit: URL redirection to untrusted site via enhanced form submission
Medium Also affects @sveltejs/kit
GHSA-29g2-3rmr-qm68
SvelteKit: ReDoS (O(n^2)) in content negotiation — unauthenticated DoS via the Accept header
Medium Also affects @sveltejs/kit
GHSA-866w-xmhq-wj7x
SvelteKit: Prototype pollution in file input deletion path in remote-function forms
Medium Also affects @sveltejs/kit
GHSA-wqjv-9729-c5q2
SvelteKit: Big remote form function payloads can cause Node process to crash
Medium Also affects @sveltejs/kit
GHSA-hgv7-v322-mmgr
@sveltejs/kit: `query.batch` cross-talk
Medium Also affects @sveltejs/kit
GHSA-3f6h-2hrp-w5wx
@sveltejs/kit: Unvalidated redirect in handle hook causes Denial-of-Service
High Also affects @sveltejs/kit
GHSA-2crg-3p73-43xp
@sveltejs/adapter-node has a BODY_SIZE_LIMIT bypass
High Also affects @sveltejs/kit
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor