Skip to main content

SvelteKit Superforms CVE-2025-62381

HIGH
Improperly Controlled Modification of Object Prototype Attributes (Prototype Pollution) (CWE-1321)
2025-10-15 security-advisories@github.com
8.3
CVSS 4.0 · Vendor: github
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Send crafted multipart form POST
  2. Delivery
    Inject __superform_json with __superform_file_ keys
  3. Exploit
    Pollute Object.prototype via setPaths traversal
  4. Execution
    Trigger DoS or type confusion
  5. Impact
    Achieve RCE via downstream gadget

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V3 - Web Frontend Security Prototype pollution prevention
MITRE ATT&CK

2 techniques across 2 tactics: Execution, Initial Access

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

The target application must process form submissions through superforms' superValidate()/parseFormData() flow (standard, documented usage), and the endpoint must accept a user-supplied multipart body containing a __superform_json field plus __superform_file_/__superform_files_ path keys - the code path that feeds attacker-controlled property paths and values into setPaths(). Per the CVSS vector (PR:N/UI:N) exploitation is unauthenticated and requires no user interaction, so any reachable form endpoint on v2.27.3 or earlier is exposed. LIMITING FACTORS: reliable prototype pollution yields DoS/type confusion against default configurations, but escalation to remote code execution is NOT automatic - it requires a suitable prototype-pollution gadget to exist in the downstream application or its dependencies, which is why the vendor assigned AC:H and AT:P (a non-guaranteed attack requirement).

Impact

The vendor-supplied CVSS 4.0 vector (8.3, High) shows AV:N and PR:N/UI:N - network-reachable and unauthenticated - but deliberately tempers this with AC:H and AT:P, signalling that reliable high-severity exploitation carries meaningful complexity and attack requirements. This is consistent with the impact metrics: VA:H (availability) is the one concrete high impact, while VC:L and VI:L (confidentiality/integrity low) reflect that the headline 'RCE' is conditional, not guaranteed. EPSS corroborates a measured risk: 0.55% probability at the 44th percentile is low-to-moderate, indicating no mass exploitation pressure, and the CVE is NOT in CISA KEV, so there is no evidence of active exploitation. A proof-of-concept is documented in the GHSA advisory (showing pollution of Object.prototype.toString), so exploit knowledge is public even though weaponized use is not observed. Net assessment: this is a legitimate patch-promptly issue for internet-exposed SvelteKit applications - prototype pollution reliably yields DoS/type confusion against default usage - but it is not an emergency: RCE depends on downstream gadget chains (reflected in AC:H/AT:P), EPSS is low, there is no KEV listing, and the affected product is a framework-specific library rather than ubiquitous infrastructure.

Exploit ScenarioDerived

An unauthenticated attacker submits a crafted multipart form POST to any endpoint that validates input with superforms' superValidate(), embedding a malicious __superform_json payload plus attacker-controlled __superform_file_/__superform_files_ path keys that cause setPaths() to write into Object.prototype. This pollutes shared object state across the Node process, reliably causing denial of service or type confusion, and - in applications containing a suitable gadget - potentially remote code execution. A working proof-of-concept polluting Object.prototype.toString is published in the GHSA advisory.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.6% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Oct 08, 2026

Prototype pollution in sveltekit-superforms 2.27.3 and earlier allows unauthenticated remote attackers to inject string and array properties into Object.prototype by submitting crafted multipart form data to any endpoint that parses forms via superValidate(). The vendor-supplied CVSS 4.0 score is 8.3 (High) with AV:N and PR:N/UI:N but tempered by AC:H and AT:P, and the assessed CVSS 3.1 vector (AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H) reflects the same trade-off: reliable pollution yields denial of service and type confusion against default configurations, while escalation to remote code execution is not automatic and depends on a suitable prototype-pollution gadget in the downstream application or its dependencies. No public exploit code or active exploitation has been identified at time of analysis (EPSS 0.55%, 44th percentile), and a vendor patch is available in 2.27.4.

RemediationAI

Vendor-released patch: upgrade sveltekit-superforms to version 2.27.4 (or later), which fixes the issue by adding a prototype-injection guard in src/lib/traversal.ts that throws when a resolved path contains __proto__ or prototype; install with your package manager, e.g. npm install sveltekit-superforms@2.27.4, and redeploy. The fix commit is https://github.com/ciscoheat/sveltekit-superforms/commit/4a1310dd1a94176bb22036662c530dad48059ca4 and the advisory is https://github.com/ciscoheat/sveltekit-superforms/security/advisories/GHSA-hwmc-4c8j-xxj7. If immediate upgrade is not possible, apply compensating controls: at the reverse proxy/WAF or in a SvelteKit hook, strip or reject any incoming form key containing __proto__, prototype, or constructor, and block requests that include __superform_file_ or __superform_files_ keys with suspicious path segments; this removes the injection vector but breaks superforms' native file-upload restoration and the __superform_json transport feature, so legitimate file uploads handled by that mechanism would need to be reimplemented or temporarily disabled. Because the polluted surface is Object.prototype, you can also harden the runtime by freezing prototypes (e.g., Object.freeze(Object.prototype)) or creating lookup objects with Object.create(null); Object.freeze of Object.prototype can break third-party libraries that legitimately extend prototypes, so test before deploying. Finally, since RCE requires a downstream gadget, review dependencies that read prototype properties for pollution-to-execution chains and keep them patched.

Affected Packages

npm sveltekit-superforms fix: 2.27.4

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 1 package in npm

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

The root cause is CWE-1321 (Improperly Controlled Modification of Object Prototype Attributes, i.e. prototype pollution) inside the parseFormData function of formData.js in the npm package sveltekit-superforms, a SvelteKit form-validation library. During normal, documented usage the server calls superValidate(request, adapter(schema)), which routes through parseRequest and then parseFormData. When the submitted form body contains a __superform_json field, its value is deserialized (with optional transport decoding) and, if the result is an object, the parser iterates over every other form key looking for the prefixes __superform_file_ and __superform_files_. It strips the prefix, splits the remainder into a nested path, and passes it with the attacker-supplied value into setPaths() (implemented via traversePath in src/lib/traversal.ts), performing an arbitrary-depth property assignment on the deserialized object. Because both the target path and the assigned value originate from user input, keys such as __superform_file___proto__.foo resolve to writes against Object.prototype rather than the intended data object, polluting the shared global prototype with attacker-chosen string or array values. The upstream fix in version 2.27.4 adds an explicit guard in traversal.ts that throws when the resolved path contains the substrings __proto__ or prototype, aborting the traversal before any assignment occurs. Downstream impact ranges from denial of service and type confusion in applications that read polluted properties, to potential RCE where a downstream gadget chain (for example in a templating, serialization, or child_process code path) consumes a polluted key. CPE data identifies the affected component as npm/sveltekit-superforms.

Know when Sveltekit gets its next vulnerability

  • Watch products and get an email when something new is published
  • Check this CVE against your own stack and servers
  • Exploit and PoC references, threat intelligence from 22 sources

No credit card · 7-day full trial

Severity by source

Vendor (github) PRIMARY 8.3 HIGH
CVSS:4.0/AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H/SC:L/SI:L/SA:L
vuln.today AI 7.0 HIGH

Network-reachable unauthenticated form endpoint (AV:N/PR:N/UI:N), but reliable severe impact needs a downstream gadget so AC:H; DoS is the dependable high-availability impact while C/I are low.

3.1 AV:N/AC:H/PR:N/UI:N/S:U/C:L/I:L/A:H
4.0 AV:N/AC:H/AT:P/PR:N/UI:N/VC:L/VI:L/VA:H/SC:N/SI:N/SA:N

Primary rating from Vendor (github).

CVSS VectorVendor: github

Attack Vector
Network
Attack Complexity
High
Attack Requirements
Present
Privileges Required
None
User Interaction
None
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
High
Subsequent system: Confidentiality
Low
Subsequent system: Integrity
Low
Subsequent system: Availability
Low

DescriptionCVE.org

sveltekit-superforms makes SvelteKit forms a pleasure to use. sveltekit-superforms v2.27.3 and prior are susceptible to a prototype pollution vulnerability within the parseFormData function of formData.js. An attacker can inject string and array properties into Object.prototype, leading to denial of service, type confusion, and potential remote code execution in downstream applications that rely on polluted objects. This vulnerability is fixed in 2.27.4.

Executive ViewAI

Why It Matters

A high-severity prototype pollution flaw in sveltekit-superforms 2.27.3 and earlier exposes organizations running affected SvelteKit applications to unauthenticated remote denial-of-service and type-confusion attacks, with a contingent path to remote code execution if a suitable gadget exists in the application or its dependencies. Because the vulnerable library parses multipart form data on public-facing endpoints, any internet-accessible deployment using superValidate() is in scope, making prompt inventory and remediation critical even though no public exploit identified at time of analysis. Vendor-released patch: 2.27.4; leadership should prioritize upgrading affected services to eliminate the risk.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.6%
Top 56% exploitable
Prevalence
Medium
popular SvelteKit form-validation library, moderate npm footprint within Svelte ecosystem
Data Quality
4 sources
Confidence: Medium

How this decision was reached

The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.

SignalValue
Severity HIGH
CISA KEV No
Public POC No
EPSS 0.6%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

43
Low Medium High Critical
KEV: 0
EPSS: +1
CVSS: +42
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Remote Code Execution represents the critical moment when an attacker successfully runs arbitrary code on a target system without physical access.

Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy