{"id":"CVE-2026-102615","summary":"HeyForm: Uploaded HTML files are served as text/html on the app origin with no CSP — stored XSS","details":"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.","aliases":["GHSA-pxw5-pjrc-j758"],"modified":"2026-11-05T21:31:33.614130665Z","published":"2026-11-05T15:32:30.406Z","database_specific":{"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102615.json","cna_assigner":"GitHub_M","cwe_ids":["CWE-79"]},"references":[{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/102xxx/CVE-2026-102615.json"},{"type":"FIX","url":"https://github.com/heyform/heyform/commit/849f7101d4370b29e716b2d7ee14a86c2f598f3a"},{"type":"WEB","url":"https://github.com/heyform/heyform/releases/tag/v3.0.1"},{"type":"ADVISORY","url":"https://github.com/heyform/heyform/security/advisories/GHSA-pxw5-pjrc-j758"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-102615"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/heyform/heyform","events":[{"introduced":"0"},{"fixed":"fe346bc7fbb8644a128dd78719f3156fd5cc48a9"},{"fixed":"849f7101d4370b29e716b2d7ee14a86c2f598f3a"}],"database_specific":{"extracted_events":[{"strategy":"StringRangeExpression","range":[{"introduced":"0"},{"fixed":"3.0.1"}],"source":"AFFECTED_FIELD"},{"source":"REFERENCES_COMMIT","range":[{"fixed":"849f7101d4370b29e716b2d7ee14a86c2f598f3a"}]},{"range":[{"fixed":"fe346bc7fbb8644a128dd78719f3156fd5cc48a9"}],"source":"REFERENCES_TAG","original_tag":"v3.0.1"}]}}],"versions":["v3.0.0","v3.0.0-rc.10","v3.0.0-rc.9","v3.0.0-rc.8","v3.0.0-rc.7","v3.0.0-rc.6","v3.0.0-rc.5","v3.0.0-rc.4","v3.0.0-rc.3","v3.0.0-rc.2","v3.0.0-rc.1","v3.0.0-alpha.3","v3.0.0-alpha-2","v0.1.0","v0.0.17","v0.0.16","v0.0.15","v0.0.13","v0.0.12","v0.0.11","v0.0.10","v0.0.9","v0.0.8","v0.0.7","v0.0.6","v0.0.5","v0.0.4","v0.0.3","v0.0.2","v0.0.1"],"database_specific":{"source":"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-102615.json"}}],"schema_version":"1.9.2","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N"}]}