Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconIdentify public HeyForm instance with active form
-
DeliveryCraft POST with arbitrary hiddenFields array payload
-
ExploitSubmit to completeSubmission endpoint unauthenticated
-
InstallServer stores injected fields without schema validation
-
C2Poisoned fields forwarded verbatim to all registered webhook integrations
-
ExecuteAdmin views submission in UI
-
ImpactStored XSS executes in admin browser context
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | The targeted form must be publicly accessible without authentication - any form configured to accept anonymous submissions is fully exposed (CVSS PR:N, UI:N). No special server configuration is required beyond a deployed HeyForm instance with at least one active public form. Webhook poisoning impact requires at least one webhook integration to be registered on the affected form; without registered webhooks, injected fields are stored but confined to the HeyForm database. The stored XSS consequence requires an administrator to view the poisoned submission in a UI that renders hidden field values without output encoding - this adds an implicit user-interaction prerequisite for the XSS chain specifically, which is not captured in the base CVSS vector. The control-character URL bypass (also patched in 3.0.0-rc.9) is limited to form fields that render submitted URLs as anchor href attributes. Exploitation is not limited to any specific platform, OS, or non-default configuration of HeyForm itself. |
| Impact | The vendor-assigned CVSS 3.1 score of 5.8 (AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N) correctly captures network reachability and low complexity, but the Changed scope metric (S:C) is critical here - it reflects that webhook integrations outside the HeyForm boundary receive poisoned data. SSVC independently confirms automatable exploitation with partial technical impact, consistent with PR:N and the trivial nature of adding arbitrary fields to a form POST. The absence of a KEV listing indicates no confirmed mass exploitation, but the automatable + POC combination lowers the bar for opportunistic scanning. The webhook amplification path is the most consequential risk dimension: downstream CRM, ticketing, or SIEM systems that parse hidden field names as trusted metadata may misinterpret injected values as legitimate form structure. The stored XSS vector requires an admin to render the poisoned submission in a vulnerable UI context (adding implicit UI:R for that impact chain), meaning direct XSS severity is lower than the injection/webhook path. EPSS data was not included in the source intelligence, so exploitation probability relative to broader internet exposure cannot be quantified. No conflicting signals between CVSS and SSVC assessments are present. |
| Exploit ScenarioDerived | An attacker submits a crafted POST to any publicly accessible HeyForm form, supplying a |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jul 20, 2026
Hidden field injection in HeyForm's form submission API allows anonymous submitters to bypass server-side schema validation and store arbitrary key/value pairs - including XSS payloads and forged authorization metadata - directly into submission records. All HeyForm deployments prior to version 3.0.0-rc.9 are affected. The injected data is subsequently forwarded verbatim to every registered webhook integration, enabling downstream system poisoning and stored XSS against any admin interface that renders submission data. SSVC rates this as automatable with a POC exploit available; no KEV listing at time of analysis.
RemediationAI
Upgrade to HeyForm version 3.0.0-rc.9 or later, which validates client-supplied hiddenFields IDs and names against the form's declared schema before persistence. The patch is available via the upstream commit at https://github.com/heyform/heyform/commit/092e255e9e02565de1b3c057f3dad849160952d2 and documented in the security advisory at https://github.com/heyform/heyform/security/advisories/GHSA-r7vg-xh87-v4w3. For organizations unable to upgrade immediately, disabling all webhook integrations prevents injected field data from reaching downstream systems, though this eliminates integration functionality entirely. Restricting submission endpoints to authenticated users via a reverse proxy (e.g., requiring session cookies before the /api/submit path is reachable) would eliminate the PR:N attack surface, at the cost of blocking public form submissions. Output-encoding all stored hidden field values in admin submission views would mitigate the stored XSS consequence independently of the injection root cause, but would not prevent webhook poisoning.
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 TypeScript/Node.js form builder (CPE: cpe:2.3:a:heyform:heyform:*:*:*:*:*:*:*:*). The root cause is CWE-20 (Improper Input Validation): the completeSubmission endpoint accepts a client-supplied hiddenFields: [{id, name, value}] array and persists it directly to submission.hiddenFields without cross-referencing supplied IDs or names against the form's server-authoritative form.hiddenFields schema. The patch commit (092e255e) also reveals a secondary XSS bypass: the previous unsafe-URL regex ^\s*(?:javascript|vbscript|data):/i could be defeated by inserting Unicode control characters (e.g., java\tscript:) within protocol strings. The fix introduces isUnsafeUrlProtocol(), which strips control characters (U+0000-U+001F, U+007F, whitespace) before protocol matching, and updates both answer-utils/html-utils.ts and form-renderer/Block.tsx to use the hardened function. The webhook forwarding pipeline (packages/server/src/apps/webhook.ts) also migrated from assertSafeOutboundUrl to assertSafeOutboundRequest as part of the same security hardening pass.
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:N/UI:N/S:C/C:N/I:L/A:N
PR:N and UI:N for the core injection; S:C for webhook downstream impact; C:L added over the vendor score to reflect stored XSS credential exfiltration potential.
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.9, completeSubmission accepts a hiddenFields: [{id, name, value}] array from the submitter and stores it verbatim in submission.hiddenFields, without validating the supplied id/name against the form's declared form.hiddenFields schema. An anonymous form submitter can therefore inject arbitrary key/value pairs (including XSS payloads, fake authorization metadata, integration-relevant values) into the stored submission. These fields are subsequently forwarded as-is to every webhook integration registered on the form. Version 3.0.0-rc.9 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
Stored cross-site scripting in HeyForm's unauthenticated file upload endpoint allows remote attackers to execute arbitra
EUVD-2026-45985
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB