Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain authenticated upload access
-
DeliveryStore malicious SVG in collection
-
ExploitVictim downloads and opens SVG
-
ExecutionJavaScript executes in browser context
-
ImpactHijack session and compromise account
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Exploitation requires a collection explicitly configured to allow downloadable SVG uploads (per the description), an attacker holding an authenticated account with upload privileges to that collection (CVSS PR:L), and a victim who subsequently downloads AND opens the stored SVG (CVSS UI:R) in a context where the embedded JavaScript executes. Limiting factors: it does not work against deployments that disallow SVG/XML uploads, it needs valid authenticated upload access rather than anonymous access, and it depends on victim action - a non-default upload configuration plus user interaction substantially narrow the realistic attack surface below what the 8.7 base score alone implies. |
| Impact | This is a stored cross-site scripting flaw (CWE-79) in Payload CMS with a vendor-provided CVSS 3.1 vector of CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N (8.7, High). The signals are moderate rather than extreme: AV:N and AC:L favor the attacker, but PR:L means the attacker must already hold a valid account with upload rights, and UI:R means a victim must download AND open the malicious SVG - both meaningfully constrain weaponization. No EPSS score was provided, the CVE is NOT in CISA KEV, and no public proof-of-concept is referenced, so the exploitation status is 'no public exploit identified at time of analysis.' The S:C (scope change) plus C:H/I:H reflects that attacker JavaScript executes in the victim's authenticated browser context, which in an admin CMS could escalate to account/session takeover - that is why the score lands high despite the interaction requirement. Net: this is a legitimate issue to patch for anyone running collections that accept SVG uploads, but it is not a drop-everything internet-wide emergency - it requires both an authenticated uploader and victim action, pointing to targeted/insider abuse rather than mass exploitation. The source-code diff (adding sax-based XML parsing, CSP headers for XML-family MIME types, and server-side upload validation) independently confirms the root cause is incomplete SVG/XML sanitization, corroborating the description. |
| Exploit ScenarioDerived | An attacker with a low-privileged account that can upload to a collection permitting downloadable SVGs stores an SVG containing embedded JavaScript that evades Payload's sanitization. When an administrator or another user later downloads and opens that SVG, the attacker's script executes in their browser context, enabling session/credential theft or actions on their behalf. No public exploit code is referenced, so exploitation would require an attacker to craft the bypass independently. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 06, 2026
Stored cross-site scripting in Payload CMS before 3.90.0 (and canary builds before 4.0.0-canary.34) lets an authenticated user with upload privileges plant a crafted SVG in any collection configured to accept downloadable SVG uploads; the file survives sanitization and executes attacker-controlled JavaScript when a victim downloads and opens it. The vendor rates it 8.7 High (CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N), reflecting the need for a valid upload account plus victim interaction, with scope change because the payload is delivered through the application's own storage and origin. No public exploit identified at time of analysis; the issue is fixed in 3.90.0 and 4.0.0-canary.34.
RemediationAI
Vendor-released patch: upgrade to Payload CMS 3.90.0 for the 3.x line or 4.0.0-canary.34 for canary 4.x; both incorporate the XML-family CSP enforcement and the SVG/XML client-upload rejection implemented in commit a8c3a8e8e2680c96ec4f66f5b3854c5df6c35adf, with details in advisory GHSA-2pwp-2369-8fg3 (https://github.com/payloadcms/payload/security/advisories/GHSA-2pwp-2369-8fg3) and release notes at https://github.com/payloadcms/payload/releases/tag/v3.90.0. If upgrading immediately is not possible, disable SVG/XML uploads on every collection that accepts user-supplied files by rejecting image/svg+xml and XML-family MIME types along with .svg/.xml extensions; the trade-off is loss of legitimate vector-graphic handling and breakage of existing asset workflows. Keep upload.allowRestrictedFileTypes unset or false so restricted types are forced through the server-validated upload path (setting it true restores the risky client-upload behavior described in the patch tests), and for self-hosted static file delivery ensure responses for image/svg+xml and all XML-family content types emit Content-Security-Policy: script-src 'none' - the pre-3.90.0 payload-cloud handler only matched the exact 'image/svg+xml' ContentType, so other XML MIME types passed through unprotected - while also serving uploads with Content-Disposition: attachment and, where feasible, from a separate cookieless origin or CDN, which requires extra DNS/CDN configuration and can change how legitimate SVG consumers render files. Note that because exploitation requires an authenticated upload account and a victim who downloads and opens the file, tightening upload permissions to trusted roles is a useful interim reduction of exposure rather than a fix.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 2 packages in npm, euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Payload CMS handles file uploads through configurable upload-enabled collections, and this flaw lives in how SVG and the broader XML family of file types are processed on ingestion and on retrieval. The root cause class is CWE-79 (improper neutralization of input during web page generation, i.e. cross-site scripting): a malicious SVG carrying script or event-handler content is stored intact rather than neutralized, so the stored artifact becomes an executable XSS vector instead of an inert image. The upstream fix (commit a8c3a8e8e2680c96ec4f66f5b3854c5df6c35adf) hardens both ends of the pipeline: it adds isSvgMimeType()/isXmlMimeType() helpers and a shared UPLOAD_CONTENT_SECURITY_POLICY constant so the payload-cloud static handler applies a strict CSP (script-src 'none') to all XML-family content types instead of only matching the literal 'image/svg+xml' ContentType as it did before, and it adds an assertClientUploadAllowed() gate that rejects filenames and MIME values identifying SVG/XML content - including case variants such as image.SVG, structured-suffix types such as application/xhtml+xml, declared MIME parameters, and sanitized trailing-dot filenames - unless the collection explicitly opts in via upload.allowRestrictedFileTypes. The patch also pulls in the sax XML parser (with @types/sax) and introduces a collection.upload.modifyResponseHeaders hook, indicating MIME/filename normalization plus response-header control are part of the defensive design. CPE data (cpe:2.3:a:payloadcms:payload:*:*:*:*:*:*:*:*) confirms the affected package is the core Payload CMS distribution rather than a third-party plugin.
Know when Payload 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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
Attacker needs an authenticated upload account (PR:L) and a victim must open the SVG (UI:R); script runs in the victim's authenticated origin (S:C) enabling session/account compromise (C:H/I:H), with no availability impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Payload is a free and open source headless content management system. In versions before 3.90.0 and canary versions before 4.0.0-canary.34, a collection that allows downloadable SVG uploads can store a malicious SVG that bypasses sanitization and executes attacker-controlled JavaScript when a user downloads and opens the SVG. This issue is fixed in versions 3.90.0 and 4.0.0-canary.34.
Blast Radius
ecosystem impact- 2 npm packages depend on payload (2 direct, 0 indirect)
Ecosystem-wide dependent count for version 4.0.0-canary.0.
Technical POC Analysis
CWE-79 (Improper Neutralization of Input During Web Page Generation), with CWE-434 also assigned.
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A stored cross-site scripting flaw in Payload CMS allows anyone with an existing content-upload account to plant a malicious SVG file that survives the platform's sanitization and executes when a colleague downloads and opens it, running attacker code inside the organization's own trusted application origin. Because the payload is served from the CMS itself, victims and their browsers are far more likely to trust it, and the same session context can expose both sensitive content and data-modification capabilities. Leadership should care because the affected population is internal content teams, and any organization running Payload CMS with SVG uploads enabled has no vendor patch to deploy today.
Apply vendor patch. Until the upgrade to Payload CMS 3.90.0 (or 4.0.0-canary.34 for canary builds) is complete, interim mitigations include disabling SVG uploads or removing SVG from accepted downloadable file types, restricting upload privileges to a minimal trusted group, serving stored assets from a separate origin with attachment-only download headers and a strict content-security policy, shortening authenticated session lifetimes, and monitoring asset repositories for suspicious or newly injected SVG files.
Threat Intelligence Overview
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
An arbitrary file upload vulnerability in the file upload module of PayloadCMS v0.15.0 allows attackers to execute arbit
Prototype pollution in Payload CMS's @payloadcms/plugin-import-export module lets an unauthenticated remote attacker sub
Field-level access control can be bypassed in Payload CMS's document duplicate operation, letting a caller with access t
Duplicate order processing in @payloadcms/plugin-ecommerce allows remote, unauthenticated attackers to have a single Str
Malformed multipart request bodies sent to Payload CMS versions 3.0.0 through 3.89.x and 4.0.0-canary.0 through 4.0.0-ca
API key disclosure in Payload CMS lets an authenticated user with ordinary read access to other users' authentication do
Authenticated users who can update an auth collection document in Payload CMS can change the password field on that docu
Payload CMS versions before 3.90.0 and canary versions before 4.0.0-canary.34 contain an authorization bypass in relatio
Unauthorized read access to stored form submissions and form email configuration in Payload CMS deployments running the
Payload CMS releases before 3.90.0 (and canary builds before 4.0.0-canary.34) expose an orderable reorder endpoint that
Payload CMS prior to 3.73.0 has a SQL injection vulnerability when querying structured data, enabling database compromis
SQL injection in Payload CMS 3.0.0 through before 3.88.0 (and 4.0.0-canary builds before 4.0.0-canary.27) allows remote
EUVD-2026-93508
GHSA-2pwp-2369-8fg3
NVD
CVE.org
EPSS
Vulnrichment
Exploit-DB