Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAttacker joins/holds low-privileged team seat
-
DeliveryInject malicious script into form rich-text/href
-
ExploitPayload stored in form definition
-
ExecutionOwner opens the form (UI:R)
-
PersistScript executes in owner's session (scope change)
-
ImpactSteal tokens / take over owner 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 | Requires an authenticated low-privileged team member (PR:L) who can create or edit form content within a shared team, and requires the higher-privileged team owner to subsequently view/open the attacker-crafted form (UI:R) for the stored payload to execute. Exploitation is limited to multi-user/team deployments where lower-trust members are granted form-authoring access; a single-owner instance with no untrusted collaborators is not exposed. The concrete injection vectors fixed are unescaped rich-text schema text and attribute values, the permissive 'style' attribute, and dangerous href URL protocols (javascript:, vbscript:, data:) in the answer-utils HTML serializer and form-renderer blocks. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H, base 9.0) shows a network-reachable, low-complexity attack that requires low-privilege authentication (PR:L, i.e. an existing team member) and victim interaction (UI:R, the owner must open the form), with a scope change (S:C) reflecting that code executes in a different, higher-privileged security context. That combination is internally consistent with the description of stored XSS leading to privilege escalation. Real-world risk is tempered by two limiting factors: the attacker must already be a member of the target team, and exploitation only triggers when the owner views the malicious form. There is no CISA KEV listing and EPSS was not provided, and no public exploit code was identified, so this is not evidence of active mass exploitation; however the source-code evidence is public, lowering the bar to reproduce. Net: a genuine high-priority issue for any multi-tenant/team HeyForm deployment where untrusted or lower-trust members can author form content, but not an unauthenticated internet-wide worming risk. |
| Exploit ScenarioDerived | A low-privileged member of a HeyForm team edits a form and inserts a rich-text/link element carrying a malicious payload (e.g. an event-handler attribute or a javascript:/data: href, or unescaped markup that breaks out of an attribute). The payload is stored and, when the team owner later opens that form in the builder or renderer, the script executes in the owner's authenticated session and is used to steal session tokens or perform privileged actions, escalating to full account takeover. No public exploit code is identified, but the fix commit and its test cases illustrate the exact injection patterns. |
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 form builder (all versions prior to 3.0.0-rc.7) lets a low-privileged team member persist malicious JavaScript that fires in the browser of a team owner who later views the affected form, yielding full account takeover through privilege escalation. The flaw stems from insufficient sanitization of rich-text/HTML block content, allowing event-handler attributes and dangerous URL protocols to survive serialization. No public exploit has been identified at time of analysis, but the underlying commit (cc97d27) and GHSA advisory clearly document the injection vector, and the CVSS 9.0 rating reflects the high blast radius of hijacking an owner session.
RemediationAI
Vendor-released patch: upgrade to HeyForm 3.0.0-rc.7, which escapes serialized text and attributes, removes the 'style' attribute from the allowlist, blocks javascript:/vbscript:/data: href protocols, and purges unsafe tags and event-handler attributes; details are in advisory https://github.com/heyform/heyform/security/advisories/GHSA-chmm-jqpm-3pwx and commit cc97d27a57ae400fec23abf5dcf6f9533c3b5db3. Because 3.0.0-rc.7 is a release candidate, validate it in staging before production rollout. If immediate upgrade is not possible, reduce exposure by tightening who can author form content: restrict form-builder/edit privileges to trusted members, review and vet forms created by lower-trust team members before an owner opens them, and consider fronting the app with a Content-Security-Policy that disallows inline script execution to blunt injected JavaScript - noting CSP may break legitimate inline behaviors and must be tested. These are compensating controls only and do not close the underlying sanitization gap.
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 an open-source form builder; the affected component is its shared answer/HTML rendering layer (packages/answer-utils/src/html-utils.ts and packages/form-renderer/src/blocks/Block.tsx). The root cause is CWE-79 (improper neutralization of input during web page generation): the serializer emitted user-controlled rich-text schema nodes and attribute values without HTML-escaping, and its allowlist permitted a permissive 'style' attribute and did not filter dangerous href URL protocols. The patch adds escapeText()/escapeAttribute() helpers, removes 'style' from allowed attributes, and introduces a UNSAFE_URL_PROTOCOL_REGEX (/^\s*(?:javascript|vbscript|data):/i) that strips javascript:, vbscript:, and data: href values, plus a purge routine that drops unsafe tags and event handlers such as onerror/onclick. Because the malicious content is stored and later rendered in a higher-privileged user's authenticated session, the executing script inherits the victim's DOM, tokens, and application privileges. CPE cpe:2.3:a:heyform:heyform:*:*:*:*:*:*:*:* identifies the affected product.
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
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:H
Authenticated low-priv member (PR:L) stores script that runs when owner views form (UI:R) in a higher-privilege context (S:C), enabling account takeover (C/I/A:H).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
HeyForm is an open-source form builder. Prior to version 3.0.0-rc.7, a stored cross-site scripting (XSS) vulnerability in the form builder allows a low-privileged team member to inject malicious JavaScript that executes when a team owner views the form, leading to complete account takeover through privilege escalation. Version 3.0.0-rc.7 contains a patch for the issue.
Executive ViewAI
HeyForm form builder deployments prior to version 3.0.0-rc.7 are vulnerable to stored cross-site scripting that enables account takeover of team owners. A low-privileged team member can inject malicious code into form designs that executes when owners access the affected forms, granting the attacker complete control of the owner's account and all associated data.
Apply vendor patch.
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.
Privilege escalation occurs when an attacker leverages flaws in access control mechanisms to gain permissions beyond what they were originally granted.
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
Stored cross-site scripting in HeyForm's unauthenticated file upload endpoint allows remote attackers to execute arbitra
Hidden field injection in HeyForm's form submission API allows anonymous submitters to bypass server-side schema validat
EUVD-2026-45984
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB