Description
HeyForm is an open-source form builder. Prior to 3.0.1, /api/upload accepts a file according to the client-controlled multipart file.mimetype while retaining an HTML filename, and static/upload serves the resulting file as text/html with contentSecurityPolicy: false. An ordinary user can therefore upload active HTML that executes on the HeyForm origin when a victim opens its returned URL. The same-origin script can access /graphql with the victim's session and read or modify data available to that account. The code also permits upload requests tied to an active public form through formId, openToken, and a fieldId belonging to a file or signature question, although the advisory did not fully verify that unauthenticated path end to end. This issue is fixed in version 3.0.1.
Published: 2026-11-05
Score: 7.6 High
EPSS: n/a
KEV: No
Impact: Stored XSS that allows a victim’s session to read or modify data via same‑origin access
Action: Immediate Patch
AI Analysis

Impact

HeyForm accepted files according to a client‑supplied MIME type and preserved the original filename. When a file containing active HTML was uploaded, the static /upload endpoint served it as text/html without setting a Content‑Security‑Policy header, giving an attacker an opportunity to inject stored XSS. An HTML file reachable at its URL can execute within the HeyForm origin, giving the attacker a same‑origin script that can call the /graphql endpoint with the victim’s session cookie and read or modify information stored in the victim’s account.

Affected Systems

All instances of HeyForm running a version prior to 3.0.1 are affected. The vulnerable functionality involves the /api/upload endpoint and the static /upload service of the heyform:heyform product.

Risk and Exploitability

The vulnerability receives a CVSS score of 7.6, indicating a high severity. The EPSS score is not available, and the issue is not listed in the CISA KEV catalog. Attackers can exploit the flaw by uploading any HTML file and having an unsuspecting user open the returned URL, thus triggering script execution confined to the HeyForm origin. The confirmed fix is implemented in version 3.0.1; until an update is applied, the flaw can be abused by anyone with upload capability in a given HeyForm deployment.

Generated by OpenCVE AI on November 5, 2026 at 16:20 UTC.

Remediation

No solution or workaround provided in the CVE record.

OpenCVE Recommended Actions

  • Upgrade to HeyForm 3.0.1 or later to apply the official fix.
  • If upgrading is not immediately possible, restrict file uploads to safe MIME types and reject any HTML files.
  • Configure a strict Content‑Security‑Policy for the static upload endpoint or serve uploaded files with a non‑HTML content type to prevent script execution.

Generated by OpenCVE AI on November 5, 2026 at 16:20 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Thu, 05 Nov 2026 15:45:00 +0000

Type Values Removed Values Added
Description HeyForm is an open-source form builder. Prior to 3.0.1, /api/upload accepts a file according to the client-controlled multipart file.mimetype while retaining an HTML filename, and static/upload serves the resulting file as text/html with contentSecurityPolicy: false. An ordinary user can therefore upload active HTML that executes on the HeyForm origin when a victim opens its returned URL. The same-origin script can access /graphql with the victim's session and read or modify data available to that account. The code also permits upload requests tied to an active public form through formId, openToken, and a fieldId belonging to a file or signature question, although the advisory did not fully verify that unauthenticated path end to end. This issue is fixed in version 3.0.1.
Title HeyForm: Uploaded HTML files are served as text/html on the app origin with no CSP — stored XSS
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 7.6, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N'}


Subscriptions

No data.

cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-11-05T15:32:30.406Z

Reserved: 2026-09-29T14:18:02.921Z

Link: CVE-2026-102615

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Deferred

Published: 2026-11-05T16:17:23.937

Modified: 2026-11-05T16:17:24.093

Link: CVE-2026-102615

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-11-05T16:30:12Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')