{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-102615","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","state":"PUBLISHED","assignerShortName":"GitHub_M","dateReserved":"2026-09-29T14:18:02.921Z","datePublished":"2026-11-05T15:32:30.406Z","dateUpdated":"2026-11-05T15:32:30.406Z"},"containers":{"cna":{"title":"HeyForm: Uploaded HTML files are served as text/html on the app origin with no CSP — stored XSS","problemTypes":[{"descriptions":[{"cweId":"CWE-79","lang":"en","description":"CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","type":"CWE"}]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":7.6,"baseSeverity":"HIGH","confidentialityImpact":"HIGH","integrityImpact":"LOW","privilegesRequired":"LOW","scope":"CHANGED","userInteraction":"REQUIRED","vectorString":"CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:L/A:N","version":"3.1"}}],"references":[{"name":"https://github.com/heyform/heyform/security/advisories/GHSA-pxw5-pjrc-j758","tags":["x_refsource_CONFIRM"],"url":"https://github.com/heyform/heyform/security/advisories/GHSA-pxw5-pjrc-j758"},{"name":"https://github.com/heyform/heyform/commit/849f7101d4370b29e716b2d7ee14a86c2f598f3a","tags":["x_refsource_MISC"],"url":"https://github.com/heyform/heyform/commit/849f7101d4370b29e716b2d7ee14a86c2f598f3a"},{"name":"https://github.com/heyform/heyform/releases/tag/v3.0.1","tags":["x_refsource_MISC"],"url":"https://github.com/heyform/heyform/releases/tag/v3.0.1"}],"affected":[{"vendor":"heyform","product":"heyform","versions":[{"version":"< 3.0.1","status":"affected"}]}],"providerMetadata":{"orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","shortName":"GitHub_M","dateUpdated":"2026-11-05T15:32:30.406Z"},"descriptions":[{"lang":"en","value":"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."}],"source":{"advisory":"GHSA-pxw5-pjrc-j758","discovery":"UNKNOWN"}}}}