{"id":"CVE-2026-75831","state":"PUBLISHED","title":"Grav before 2.0.15 Stored XSS via audio/video source URL","description":"Grav before 2.0.15 contains a stored cross-site scripting vulnerability in the audio and video media rendering through the sourceParsedownElement method. The media URL fragment is concatenated unescaped into rawHtml source elements, allowing attackers to inject arbitrary HTML and JavaScript that executes in viewers' sessions.","publishedAt":"2026-08-18T11:19:43.062Z","updatedAt":"2026-10-08T15:24:57.117Z","severity":{"score":5.1,"label":"Medium","version":"4.0","vector":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","source":"VulnCheck"},"assigner":"VulnCheck","products":["getgrav grav"],"affected":[{"vendor":"getgrav","product":"grav","packageURL":"pkg:composer/getgrav/grav","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"2.0.15","versionType":"semver"},{"version":"2.0.15","status":"unaffected","versionType":"semver"}]}],"references":["https://github.com/getgrav/grav/security/advisories/GHSA-6qw9-4vv5-jr97","https://github.com/getgrav/grav/commit/aba291a59cab29ddce491175791888d8d0b65e20","https://www.vulncheck.com/advisories/grav-before-stored-xss-via-audio-video-source-url"],"weaknesses":["CWE-79"],"ingestedAt":"2026-10-29T20:12:58.252Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/75xxx/CVE-2026-75831.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-75831","state":"PUBLISHED","datePublished":"2026-08-18T11:19:43.062Z","dateUpdated":"2026-10-08T15:24:57.117Z","assignerShortName":"VulnCheck","assignerOrgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateReserved":"2026-08-18T10:57:39.580Z"},"containers":{"cna":{"title":"Grav before 2.0.15 Stored XSS via audio/video source URL","descriptions":[{"lang":"en","value":"Grav before 2.0.15 contains a stored cross-site scripting vulnerability in the audio and video media rendering through the sourceParsedownElement method. The media URL fragment is concatenated unescaped into rawHtml source elements, allowing attackers to inject arbitrary HTML and JavaScript that executes in viewers' sessions."}],"affected":[{"vendor":"getgrav","product":"grav","packageURL":"pkg:composer/getgrav/grav","defaultStatus":"unaffected","versions":[{"version":"0","status":"affected","lessThan":"2.0.15","versionType":"semver"},{"version":"2.0.15","status":"unaffected","versionType":"semver"}]}],"references":[{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-6qw9-4vv5-jr97","tags":["vendor-advisory"],"name":"GitHub Security Advisory (GHSA-6qw9-4vv5-jr97)"},{"url":"https://github.com/getgrav/grav/commit/aba291a59cab29ddce491175791888d8d0b65e20","tags":["patch"],"name":"Patch Commit"},{"url":"https://www.vulncheck.com/advisories/grav-before-stored-xss-via-audio-video-source-url","name":"VulnCheck Advisory: Grav before 2.0.15 Stored XSS via audio/video source URL","tags":["third-party-advisory"]}],"metrics":[{"cvssV4_0":{"Automatable":"NOT_DEFINED","Recovery":"NOT_DEFINED","Safety":"NOT_DEFINED","attackComplexity":"LOW","attackRequirements":"NONE","attackVector":"NETWORK","baseScore":5.1,"baseSeverity":"MEDIUM","exploitMaturity":"NOT_DEFINED","privilegesRequired":"LOW","providerUrgency":"NOT_DEFINED","subAvailabilityImpact":"NONE","subConfidentialityImpact":"LOW","subIntegrityImpact":"LOW","userInteraction":"PASSIVE","valueDensity":"NOT_DEFINED","vectorString":"CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N","version":"4.0","vulnAvailabilityImpact":"NONE","vulnConfidentialityImpact":"NONE","vulnIntegrityImpact":"NONE","vulnerabilityResponseEffort":"NOT_DEFINED"},"format":"CVSS"},{"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"},"format":"CVSS"}],"problemTypes":[{"descriptions":[{"cweId":"CWE-79","lang":"en","description":"Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","type":"CWE"}]}],"providerMetadata":{"shortName":"VulnCheck","orgId":"83251b91-4cc7-4094-a5c7-464a1b83ea10","dateUpdated":"2026-10-08T15:24:57.117Z"},"datePublic":"2026-08-03T00:00:00.000Z","cpeApplicability":[{"nodes":[{"operator":"OR","negate":false,"cpeMatch":[{"vulnerable":true,"criteria":"cpe:2.3:a:getgrav:grav:*:*:*:*:*:*:*:*","versionEndExcluding":"2.0.15"}]}]}],"credits":[{"lang":"en","value":"alimony","type":"reporter"}],"x_generator":{"engine":"vulncheck-endgame"}},"adp":[{"title":"CISA ADP Vulnrichment","references":[{"url":"https://github.com/getgrav/grav/security/advisories/GHSA-6qw9-4vv5-jr97","tags":["exploit"]}],"metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-08-18T13:55:23.651515Z","id":"CVE-2026-75831","options":[{"Exploitation":"poc"},{"Automatable":"no"},{"Technical Impact":"partial"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-08-18T13:55:32.341Z"}}]}}}