Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify network-accessible HeyForm instance
-
DeliveryPOST crafted SVG with JS payload to /api/upload (no auth)
-
ExploitCapture returned URL for stored SVG
-
InstallDeliver SVG URL to target user via phishing or shared form link
-
C2Victim browser fetches SVG served as image/svg+xml
-
ExecuteEmbedded script executes in HeyForm domain
-
ImpactExfiltrate session tokens or perform actions as victim
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 | The |
| Impact | The CVSS 4.0 score of 6.4 (Medium) with vector AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N accurately reflects the stored XSS mechanics: zero authentication is required to upload the malicious payload, attack complexity is negligible, but passive victim interaction (UI:P) is required for the XSS to trigger, suppressing the overall score. The subsequent-system impact ratings of SC:H/SI:H are justified - an attacker who achieves script execution in the HeyForm domain context can exfiltrate session tokens, impersonate users, modify form data, or pivot to credential phishing. No EPSS score was provided, and the vulnerability is not listed in CISA KEV, so exploitation probability cannot be quantified from available data. The affected version range (< 3.0.0-rc.7) places this in a release-candidate series, which may reduce production exposure compared to a stable release - however, deployment scale is unconfirmed. The low barrier to upload (unauthenticated, low complexity) means exploitation is conceptually trivial once an attacker identifies an exposed instance; the primary limiting factor is victim interaction, not technical sophistication. |
| Exploit ScenarioDerived | An unauthenticated attacker crafts an SVG file embedding a JavaScript payload - for example, |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 20, 2026
Stored cross-site scripting in HeyForm's unauthenticated file upload endpoint allows remote attackers to execute arbitrary JavaScript in victims' browsers by uploading SVG files containing embedded scripts. The /api/upload endpoint accepted SVG uploads without authentication, stored them in the static assets directory, and Express's serve-static served them with Content-Type: image/svg+xml, enabling script execution in the HeyForm domain context when a victim views the file URL. No active exploitation is confirmed (not in CISA KEV); vendor-released patch 3.0.0-rc.7 is available.
RemediationAI
Upgrade HeyForm to version 3.0.0-rc.7 or later, which contains the vendor patch (commit 144240e5545d10fd9e120d05ccb402a6d7064674). The fix applies a defense-in-depth approach: upload.controller.ts now maintains a blocklist rejecting .svg and .svgz file extensions and image/svg+xml/application/svg+xml MIME types at upload time; a dedicated Express middleware intercepts requests to /static/upload and returns HTTP 403 for any SVG or SVGZ path before serve-static processes them; SVG was removed from the allowed extensions for the upload static route; and X-Content-Type-Options: nosniff was added to upload-served responses. If immediate patching is not possible, a compensating control is to configure an upstream reverse proxy (e.g., nginx) to block all POST requests to /api/upload from unauthenticated sessions - note this disables the upload feature entirely. Alternatively, configuring the proxy to inject Content-Disposition: attachment on all responses from the upload path forces downloads rather than inline rendering, reducing but not eliminating XSS risk (some browsers still parse SVG as active content when opened directly). Neither workaround replaces the upstream patch. Advisory: https://github.com/heyform/heyform/security/advisories/GHSA-m94h-jxvc-hhch.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
HeyForm is a Node.js/TypeScript form-builder application using Express.js as its HTTP server and Multer for multipart file handling. The root cause (CWE-79: Improper Neutralization of Input During Web Page Generation) is twofold: first, image/svg+xml was present in the commonFileMimeTypes allowlist in packages/utils/src/mime.ts, permitting SVG uploads through the Multer filter; second, the serve-static middleware served uploaded files directly from the static assets directory with their natural MIME type and no X-Content-Type-Options: nosniff header. SVG is an XML-based vector format that natively supports embedded JavaScript via <script> elements and inline event handlers; when served with Content-Type: image/svg+xml in a browser, it is parsed and executed as active content - functionally equivalent to HTML from a script-execution standpoint. CPE cpe:2.3:a:heyform:heyform:*:*:*:*:*:*:*:* covers all versions prior to the fix.
Know when Heyform 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
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:H/SI:H/SA:N
Network delivery with no auth or complexity, but victim interaction required; scope changes to browser context with low confidentiality/integrity impact typical of stored XSS.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.org
HeyForm is an open-source form builder. Prior to version 3.0.0-rc.7, the /api/upload endpoint allows unauthenticated file uploads including SVG files. Uploaded SVGs are stored in the static assets directory and served with Content-Type: image/svg+xml by Express's serve-static middleware, allowing an attacker to achieve stored cross-site scripting (XSS) on the heyform domain without any authentication. Version 3.0.0-rc.7 contains a patch for the issue.
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.
Stored cross-site scripting in HeyForm's form builder (all versions prior to 3.0.0-rc.7) lets a low-privileged team memb
Missing authentication in HeyForm's POST /api/upload endpoint lets any anonymous internet user upload files up to 10 MB
Cross-origin credential exposure in HeyForm before 3.0.0-rc.8 allows any attacker-controlled web page visited by a logge
Hidden field injection in HeyForm's form submission API allows anonymous submitters to bypass server-side schema validat
EUVD-2026-45983
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB