Action not permitted
Modal body text goes here.
Modal Title
Modal Body
CVE-2026-65902 (GCVE-0-2026-65902)
Vulnerability from cvelistv5 – Published: 2026-07-23 13:16 – Updated: 2026-07-24 21:35- CWE-501 - Trust Boundary Violation
| URL | Tags |
|---|---|
| https://github.com/cure53/DOMPurify/security/advi… | vendor-advisory |
| https://github.com/cure53/DOMPurify/commit/7996f1… | patch |
| https://www.vulncheck.com/advisories/dompurify-be… | third-party-advisory |
{
"containers": {
"adp": [
{
"metrics": [
{
"other": {
"content": {
"id": "CVE-2026-65902",
"options": [
{
"Exploitation": "poc"
},
{
"Automatable": "no"
},
{
"Technical Impact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-23T13:58:18.807154Z",
"version": "2.0.3"
},
"type": "ssvc"
}
}
],
"providerMetadata": {
"dateUpdated": "2026-07-23T13:58:32.945Z",
"orgId": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"shortName": "CISA-ADP"
},
"references": [
{
"tags": [
"exploit"
],
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
}
],
"title": "CISA ADP Vulnrichment"
}
],
"cna": {
"affected": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:npm/dompurify",
"product": "DOMPurify",
"vendor": "cure53",
"versions": [
{
"lessThan": "3.4.7",
"status": "affected",
"version": "0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "3.4.7",
"versionType": "semver"
}
]
}
],
"cpeApplicability": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*",
"versionEndExcluding": "3.4.7",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"credits": [
{
"lang": "en",
"type": "reporter",
"value": "offset"
}
],
"datePublic": "2026-05-26T00:00:00.000Z",
"descriptions": [
{
"lang": "en",
"value": "DOMPurify before 3.4.7 (affected versions \u003c= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does."
}
],
"metrics": [
{
"cvssV4_0": {
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"privilegesRequired": "NONE",
"subAvailabilityImpact": "NONE",
"subConfidentialityImpact": "LOW",
"subIntegrityImpact": "LOW",
"userInteraction": "PASSIVE",
"vectorString": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW"
},
"format": "CVSS"
},
{
"cvssV3_1": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"format": "CVSS"
}
],
"problemTypes": [
{
"descriptions": [
{
"cweId": "CWE-501",
"description": "Trust Boundary Violation",
"lang": "en",
"type": "CWE"
}
]
}
],
"providerMetadata": {
"dateUpdated": "2026-07-24T21:35:25.085Z",
"orgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"shortName": "VulnCheck"
},
"references": [
{
"name": "GitHub Security Advisory (GHSA-76mc-f452-cxcm)",
"tags": [
"vendor-advisory"
],
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
},
{
"name": "Patch Commit",
"tags": [
"patch"
],
"url": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36"
},
{
"name": "VulnCheck Advisory: DOMPurify before 3.4.7 Hook Mutation Pollution via allowedTags",
"tags": [
"third-party-advisory"
],
"url": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags"
}
],
"title": "DOMPurify before 3.4.7 Hook Mutation Pollution via allowedTags",
"x_generator": {
"engine": "vulncheck-endgame"
}
}
},
"cveMetadata": {
"assignerOrgId": "83251b91-4cc7-4094-a5c7-464a1b83ea10",
"assignerShortName": "VulnCheck",
"cveId": "CVE-2026-65902",
"datePublished": "2026-07-23T13:16:20.528Z",
"dateReserved": "2026-07-23T11:03:13.092Z",
"dateUpdated": "2026-07-24T21:35:25.085Z",
"state": "PUBLISHED"
},
"dataType": "CVE_RECORD",
"dataVersion": "5.2",
"vulnerability-lookup:meta": {
"epss": {
"cve": "CVE-2026-65902",
"date": "2026-08-24",
"epss": "0.00237",
"percentile": "0.14515"
},
"nvd": "{\"cve\":{\"id\":\"CVE-2026-65902\",\"sourceIdentifier\":\"disclosure@vulncheck.com\",\"published\":\"2026-07-23T14:18:05.453\",\"lastModified\":\"2026-07-28T15:51:48.907\",\"vulnStatus\":\"Analyzed\",\"cveTags\":[],\"descriptions\":[{\"lang\":\"en\",\"value\":\"DOMPurify before 3.4.7 (affected versions \u003c= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.\"}],\"affected\":[{\"source\":\"disclosure@vulncheck.com\",\"affectedData\":[{\"vendor\":\"cure53\",\"product\":\"DOMPurify\",\"defaultStatus\":\"unaffected\",\"packageURL\":\"pkg:npm/dompurify\",\"versions\":[{\"version\":\"0\",\"lessThan\":\"3.4.7\",\"versionType\":\"semver\",\"status\":\"affected\"},{\"version\":\"3.4.7\",\"versionType\":\"semver\",\"status\":\"unaffected\"}]}]}],\"metrics\":{\"cvssMetricV40\":[{\"source\":\"disclosure@vulncheck.com\",\"type\":\"Secondary\",\"cvssData\":{\"version\":\"4.0\",\"vectorString\":\"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X\",\"baseScore\":5.3,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"attackRequirements\":\"NONE\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"PASSIVE\",\"vulnConfidentialityImpact\":\"LOW\",\"vulnIntegrityImpact\":\"LOW\",\"vulnAvailabilityImpact\":\"NONE\",\"subConfidentialityImpact\":\"LOW\",\"subIntegrityImpact\":\"LOW\",\"subAvailabilityImpact\":\"NONE\",\"exploitMaturity\":\"NOT_DEFINED\",\"confidentialityRequirement\":\"NOT_DEFINED\",\"integrityRequirement\":\"NOT_DEFINED\",\"availabilityRequirement\":\"NOT_DEFINED\",\"modifiedAttackVector\":\"NOT_DEFINED\",\"modifiedAttackComplexity\":\"NOT_DEFINED\",\"modifiedAttackRequirements\":\"NOT_DEFINED\",\"modifiedPrivilegesRequired\":\"NOT_DEFINED\",\"modifiedUserInteraction\":\"NOT_DEFINED\",\"modifiedVulnConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedVulnIntegrityImpact\":\"NOT_DEFINED\",\"modifiedVulnAvailabilityImpact\":\"NOT_DEFINED\",\"modifiedSubConfidentialityImpact\":\"NOT_DEFINED\",\"modifiedSubIntegrityImpact\":\"NOT_DEFINED\",\"modifiedSubAvailabilityImpact\":\"NOT_DEFINED\",\"Safety\":\"NOT_DEFINED\",\"Automatable\":\"NOT_DEFINED\",\"Recovery\":\"NOT_DEFINED\",\"valueDensity\":\"NOT_DEFINED\",\"vulnerabilityResponseEffort\":\"NOT_DEFINED\",\"providerUrgency\":\"NOT_DEFINED\"}}],\"cvssMetricV31\":[{\"source\":\"disclosure@vulncheck.com\",\"type\":\"Primary\",\"cvssData\":{\"version\":\"3.1\",\"vectorString\":\"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\",\"baseScore\":6.1,\"baseSeverity\":\"MEDIUM\",\"attackVector\":\"NETWORK\",\"attackComplexity\":\"LOW\",\"privilegesRequired\":\"NONE\",\"userInteraction\":\"REQUIRED\",\"scope\":\"CHANGED\",\"confidentialityImpact\":\"LOW\",\"integrityImpact\":\"LOW\",\"availabilityImpact\":\"NONE\"},\"exploitabilityScore\":2.8,\"impactScore\":2.7}],\"ssvcV203\":[{\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"ssvcData\":{\"timestamp\":\"2026-07-23T13:58:18.807154Z\",\"id\":\"CVE-2026-65902\",\"options\":[{\"exploitation\":\"poc\"},{\"automatable\":\"no\"},{\"technicalImpact\":\"partial\"}],\"role\":\"CISA Coordinator\",\"version\":\"2.0.3\"}}]},\"weaknesses\":[{\"source\":\"disclosure@vulncheck.com\",\"type\":\"Primary\",\"description\":[{\"lang\":\"en\",\"value\":\"CWE-501\"}]}],\"configurations\":[{\"nodes\":[{\"operator\":\"OR\",\"negate\":false,\"cpeMatch\":[{\"vulnerable\":true,\"criteria\":\"cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*\",\"versionEndExcluding\":\"3.4.7\",\"matchCriteriaId\":\"B8B46CA2-8534-449B-8178-06632ED40826\"}]}]}],\"references\":[{\"url\":\"https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36\",\"source\":\"disclosure@vulncheck.com\",\"tags\":[\"Patch\"]},{\"url\":\"https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm\",\"source\":\"disclosure@vulncheck.com\",\"tags\":[\"Exploit\",\"Third Party Advisory\"]},{\"url\":\"https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags\",\"source\":\"disclosure@vulncheck.com\",\"tags\":[\"Third Party Advisory\"]},{\"url\":\"https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm\",\"source\":\"134c704f-9b21-4f2e-91b3-4a467353bcc0\",\"tags\":[\"Exploit\",\"Third Party Advisory\"]}]}}",
"redhat_vex": {
"aggregate_severity": "Moderate",
"current_release_date": "2026-08-24T11:17:29+00:00",
"cve": "CVE-2026-65902",
"id": "CVE-2026-65902",
"initial_release_date": "2026-07-23T13:16:20.528000+00:00",
"product_status:fixed": "6",
"product_status:known_affected": "34",
"product_status:known_not_affected": "4",
"product_status:under_investigation": "135",
"source": "Red Hat CSAF VEX",
"status": "final",
"title": "dompurify: DOMPurify: Sanitization bypass via hook manipulation",
"url": "https://security.access.redhat.com/data/csaf/v2/vex/2026/cve-2026-65902.json",
"version": "3"
},
"suse_vex": {
"aggregate_severity": "important",
"current_release_date": "2026-08-05T00:30:44Z",
"cve": "CVE-2026-65902",
"id": "CVE-2026-65902",
"initial_release_date": "2026-08-05T00:30:44Z",
"product_status:known_affected": "14",
"source": "SUSE CSAF VEX",
"status": "interim",
"title": "SUSE CVE CVE-2026-65902",
"url": "https://ftp.suse.com/pub/projects/security/csaf-vex/cve-2026-65902.json",
"version": "2"
},
"vulnrichment": {
"containers": "{\"adp\": [{\"title\": \"CISA ADP Vulnrichment\", \"metrics\": [{\"other\": {\"type\": \"ssvc\", \"content\": {\"id\": \"CVE-2026-65902\", \"role\": \"CISA Coordinator\", \"options\": [{\"Exploitation\": \"poc\"}, {\"Automatable\": \"no\"}, {\"Technical Impact\": \"partial\"}], \"version\": \"2.0.3\", \"timestamp\": \"2026-07-23T13:58:18.807154Z\"}}}], \"references\": [{\"url\": \"https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm\", \"tags\": [\"exploit\"]}], \"providerMetadata\": {\"orgId\": \"134c704f-9b21-4f2e-91b3-4a467353bcc0\", \"shortName\": \"CISA-ADP\", \"dateUpdated\": \"2026-07-23T13:58:28.203Z\"}}], \"cna\": {\"title\": \"DOMPurify before 3.4.7 Hook Mutation Pollution via allowedTags\", \"credits\": [{\"lang\": \"en\", \"type\": \"reporter\", \"value\": \"offset\"}], \"metrics\": [{\"format\": \"CVSS\", \"cvssV4_0\": {\"version\": \"4.0\", \"baseScore\": 5.3, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N\", \"userInteraction\": \"PASSIVE\", \"attackComplexity\": \"LOW\", \"attackRequirements\": \"NONE\", \"privilegesRequired\": \"NONE\", \"subIntegrityImpact\": \"LOW\", \"vulnIntegrityImpact\": \"LOW\", \"subAvailabilityImpact\": \"NONE\", \"vulnAvailabilityImpact\": \"NONE\", \"subConfidentialityImpact\": \"LOW\", \"vulnConfidentialityImpact\": \"LOW\"}}, {\"format\": \"CVSS\", \"cvssV3_1\": {\"scope\": \"CHANGED\", \"version\": \"3.1\", \"baseScore\": 6.1, \"attackVector\": \"NETWORK\", \"baseSeverity\": \"MEDIUM\", \"vectorString\": \"CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N\", \"integrityImpact\": \"LOW\", \"userInteraction\": \"REQUIRED\", \"attackComplexity\": \"LOW\", \"availabilityImpact\": \"NONE\", \"privilegesRequired\": \"NONE\", \"confidentialityImpact\": \"LOW\"}}], \"affected\": [{\"vendor\": \"cure53\", \"product\": \"DOMPurify\", \"versions\": [{\"status\": \"affected\", \"version\": \"0\", \"lessThan\": \"3.4.7\", \"versionType\": \"semver\"}, {\"status\": \"unaffected\", \"version\": \"3.4.7\", \"versionType\": \"semver\"}], \"packageURL\": \"pkg:npm/dompurify\", \"defaultStatus\": \"unaffected\"}], \"datePublic\": \"2026-05-26T00:00:00.000Z\", \"references\": [{\"url\": \"https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm\", \"name\": \"GitHub Security Advisory (GHSA-76mc-f452-cxcm)\", \"tags\": [\"vendor-advisory\"]}, {\"url\": \"https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36\", \"name\": \"Patch Commit\", \"tags\": [\"patch\"]}, {\"url\": \"https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags\", \"name\": \"VulnCheck Advisory: DOMPurify before 3.4.7 Hook Mutation Pollution via allowedTags\", \"tags\": [\"third-party-advisory\"]}], \"x_generator\": {\"engine\": \"vulncheck-endgame\"}, \"descriptions\": [{\"lang\": \"en\", \"value\": \"DOMPurify before 3.4.7 (affected versions \u003c= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.\"}], \"problemTypes\": [{\"descriptions\": [{\"lang\": \"en\", \"type\": \"CWE\", \"cweId\": \"CWE-501\", \"description\": \"Trust Boundary Violation\"}]}], \"cpeApplicability\": [{\"nodes\": [{\"negate\": false, \"cpeMatch\": [{\"criteria\": \"cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*\", \"vulnerable\": true, \"versionEndExcluding\": \"3.4.7\"}], \"operator\": \"OR\"}]}], \"providerMetadata\": {\"orgId\": \"83251b91-4cc7-4094-a5c7-464a1b83ea10\", \"shortName\": \"VulnCheck\", \"dateUpdated\": \"2026-07-24T21:35:25.085Z\"}}}",
"cveMetadata": "{\"cveId\": \"CVE-2026-65902\", \"state\": \"PUBLISHED\", \"dateUpdated\": \"2026-07-24T21:35:25.085Z\", \"dateReserved\": \"2026-07-23T11:03:13.092Z\", \"assignerOrgId\": \"83251b91-4cc7-4094-a5c7-464a1b83ea10\", \"datePublished\": \"2026-07-23T13:16:20.528Z\", \"assignerShortName\": \"VulnCheck\"}",
"dataType": "CVE_RECORD",
"dataVersion": "5.2"
}
}
}
CERTFR-2026-AVI-1049
Vulnerability from certfr_avis - Published: 2026-08-19 - Updated: 2026-08-19
De multiples vulnérabilités ont été découvertes dans Oracle MySQL. Certaines d'entre elles permettent à un attaquant de provoquer une exécution de code arbitraire à distance, un déni de service à distance et une atteinte à la confidentialité des données.
Solutions
Se référer au bulletin de sécurité de l'éditeur pour l'obtention des correctifs (cf. section Documentation).
| Vendor | Product | Description | ||
|---|---|---|---|---|
| Oracle | MySQL | MySQL AI versions 9.4.0 à 9.7.2 | ||
| Oracle | MySQL | MySQL Cluster versions à 8.0.0 à 8.0.48 | ||
| Oracle | MySQL | MySQL AI version 26.7.0 | ||
| Oracle | MySQL | MySQL Shell (_Shell: Core Client) version 26.7.0 | ||
| Oracle | MySQL | MySQL Cluster versions 8.4.0 à 8.4.11 | ||
| Oracle | MySQL | MySQL Cluster versions 9.7.0 à 9.7.2 | ||
| Oracle | MySQL | MySQL Connectors (_Connector/ODBC) version 26.7.0 | ||
| Oracle | MySQL | Enterprise Manager for MySQL Database versions 13.5.1.0.0 à 13.5.6.0.0 |
| Title | Publication Time | Tags | |||
|---|---|---|---|---|---|
|
|||||
{
"$ref": "https://www.cert.ssi.gouv.fr/openapi.json",
"affected_systems": [
{
"description": "MySQL AI versions 9.4.0 \u00e0 9.7.2",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL Cluster versions \u00e0 8.0.0 \u00e0 8.0.48",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL AI version 26.7.0",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL Shell (_Shell: Core Client) version 26.7.0",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL Cluster versions 8.4.0 \u00e0 8.4.11",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL Cluster versions 9.7.0 \u00e0 9.7.2",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "MySQL Connectors (_Connector/ODBC) version 26.7.0",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
},
{
"description": "Enterprise Manager for MySQL Database versions 13.5.1.0.0 \u00e0 13.5.6.0.0",
"product": {
"name": "MySQL",
"vendor": {
"name": "Oracle",
"scada": false
}
}
}
],
"affected_systems_content": "",
"content": "## Solutions\n\nSe r\u00e9f\u00e9rer au bulletin de s\u00e9curit\u00e9 de l\u0027\u00e9diteur pour l\u0027obtention des correctifs (cf. section Documentation).",
"cves": [
{
"name": "CVE-2026-49978",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-49978"
},
{
"name": "CVE-2025-14821",
"url": "https://www.cve.org/CVERecord?id=CVE-2025-14821"
},
{
"name": "CVE-2026-71073",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-71073"
},
{
"name": "CVE-2026-41239",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-41239"
},
{
"name": "CVE-2026-71079",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-71079"
},
{
"name": "CVE-2026-65901",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65901"
},
{
"name": "CVE-2026-65903",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65903"
},
{
"name": "CVE-2026-65900",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65900"
},
{
"name": "CVE-2026-60592",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-60592"
},
{
"name": "CVE-2026-70724",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-70724"
},
{
"name": "CVE-2026-49458",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-49458"
},
{
"name": "CVE-2026-65914",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65914"
},
{
"name": "CVE-2026-65913",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65913"
},
{
"name": "CVE-2026-0540",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0540"
},
{
"name": "CVE-2026-0966",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0966"
},
{
"name": "CVE-2026-65912",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65912"
},
{
"name": "CVE-2026-34478",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-34478"
},
{
"name": "CVE-2026-34480",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-34480"
},
{
"name": "CVE-2026-71084",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-71084"
},
{
"name": "CVE-2025-13151",
"url": "https://www.cve.org/CVERecord?id=CVE-2025-13151"
},
{
"name": "CVE-2026-49459",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-49459"
},
{
"name": "CVE-2025-68161",
"url": "https://www.cve.org/CVERecord?id=CVE-2025-68161"
},
{
"name": "CVE-2026-41240",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-41240"
},
{
"name": "CVE-2026-34479",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-34479"
},
{
"name": "CVE-2026-0964",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0964"
},
{
"name": "CVE-2026-65899",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65899"
},
{
"name": "CVE-2026-0965",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0965"
},
{
"name": "CVE-2026-0967",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0967"
},
{
"name": "CVE-2026-0968",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-0968"
},
{
"name": "CVE-2026-41238",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-41238"
},
{
"name": "CVE-2026-34477",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-34477"
},
{
"name": "CVE-2026-65902",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65902"
},
{
"name": "CVE-2026-34481",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-34481"
},
{
"name": "CVE-2026-65898",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65898"
}
],
"initial_release_date": "2026-08-19T00:00:00",
"last_revision_date": "2026-08-19T00:00:00",
"links": [],
"reference": "CERTFR-2026-AVI-1049",
"revisions": [
{
"description": "Version initiale",
"revision_date": "2026-08-19T00:00:00.000000"
}
],
"risks": [
{
"description": "D\u00e9ni de service \u00e0 distance"
},
{
"description": "Ex\u00e9cution de code arbitraire \u00e0 distance"
},
{
"description": "Atteinte \u00e0 l\u0027int\u00e9grit\u00e9 des donn\u00e9es"
},
{
"description": "Atteinte \u00e0 la confidentialit\u00e9 des donn\u00e9es"
}
],
"summary": "De multiples vuln\u00e9rabilit\u00e9s ont \u00e9t\u00e9 d\u00e9couvertes dans Oracle MySQL. Certaines d\u0027entre elles permettent \u00e0 un attaquant de provoquer une ex\u00e9cution de code arbitraire \u00e0 distance, un d\u00e9ni de service \u00e0 distance et une atteinte \u00e0 la confidentialit\u00e9 des donn\u00e9es.",
"title": "Multiples vuln\u00e9rabilit\u00e9s dans Oracle MySQL",
"vendor_advisories": [
{
"published_at": "2026-08-18",
"title": "Bulletin de s\u00e9curit\u00e9 Oracle MySQL cspuaug2026",
"url": "https://www.oracle.com/security-alerts/cspuaug2026.html"
}
]
}
FKIE_CVE-2026-65902
Vulnerability from fkie_nvd - Published: 2026-07-23 14:18 - Updated: 2026-07-28 15:51{
"affected": [
{
"affectedData": [
{
"defaultStatus": "unaffected",
"packageURL": "pkg:npm/dompurify",
"product": "DOMPurify",
"vendor": "cure53",
"versions": [
{
"lessThan": "3.4.7",
"status": "affected",
"version": "0",
"versionType": "semver"
},
{
"status": "unaffected",
"version": "3.4.7",
"versionType": "semver"
}
]
}
],
"source": "disclosure@vulncheck.com"
}
],
"configurations": [
{
"nodes": [
{
"cpeMatch": [
{
"criteria": "cpe:2.3:a:cure53:dompurify:*:*:*:*:*:*:*:*",
"matchCriteriaId": "B8B46CA2-8534-449B-8178-06632ED40826",
"versionEndExcluding": "3.4.7",
"vulnerable": true
}
],
"negate": false,
"operator": "OR"
}
]
}
],
"cveTags": [],
"descriptions": [
{
"lang": "en",
"value": "DOMPurify before 3.4.7 (affected versions \u003c= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does."
}
],
"id": "CVE-2026-65902",
"lastModified": "2026-07-28T15:51:48.907",
"metrics": {
"cvssMetricV31": [
{
"cvssData": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"exploitabilityScore": 2.8,
"impactScore": 2.7,
"source": "disclosure@vulncheck.com",
"type": "Primary"
}
],
"cvssMetricV40": [
{
"cvssData": {
"Automatable": "NOT_DEFINED",
"Recovery": "NOT_DEFINED",
"Safety": "NOT_DEFINED",
"attackComplexity": "LOW",
"attackRequirements": "NONE",
"attackVector": "NETWORK",
"availabilityRequirement": "NOT_DEFINED",
"baseScore": 5.3,
"baseSeverity": "MEDIUM",
"confidentialityRequirement": "NOT_DEFINED",
"exploitMaturity": "NOT_DEFINED",
"integrityRequirement": "NOT_DEFINED",
"modifiedAttackComplexity": "NOT_DEFINED",
"modifiedAttackRequirements": "NOT_DEFINED",
"modifiedAttackVector": "NOT_DEFINED",
"modifiedPrivilegesRequired": "NOT_DEFINED",
"modifiedSubAvailabilityImpact": "NOT_DEFINED",
"modifiedSubConfidentialityImpact": "NOT_DEFINED",
"modifiedSubIntegrityImpact": "NOT_DEFINED",
"modifiedUserInteraction": "NOT_DEFINED",
"modifiedVulnAvailabilityImpact": "NOT_DEFINED",
"modifiedVulnConfidentialityImpact": "NOT_DEFINED",
"modifiedVulnIntegrityImpact": "NOT_DEFINED",
"privilegesRequired": "NONE",
"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:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X",
"version": "4.0",
"vulnAvailabilityImpact": "NONE",
"vulnConfidentialityImpact": "LOW",
"vulnIntegrityImpact": "LOW",
"vulnerabilityResponseEffort": "NOT_DEFINED"
},
"source": "disclosure@vulncheck.com",
"type": "Secondary"
}
],
"ssvcV203": [
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"ssvcData": {
"id": "CVE-2026-65902",
"options": [
{
"exploitation": "poc"
},
{
"automatable": "no"
},
{
"technicalImpact": "partial"
}
],
"role": "CISA Coordinator",
"timestamp": "2026-07-23T13:58:18.807154Z",
"version": "2.0.3"
}
}
]
},
"published": "2026-07-23T14:18:05.453",
"references": [
{
"source": "disclosure@vulncheck.com",
"tags": [
"Patch"
],
"url": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36"
},
{
"source": "disclosure@vulncheck.com",
"tags": [
"Exploit",
"Third Party Advisory"
],
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
},
{
"source": "disclosure@vulncheck.com",
"tags": [
"Third Party Advisory"
],
"url": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags"
},
{
"source": "134c704f-9b21-4f2e-91b3-4a467353bcc0",
"tags": [
"Exploit",
"Third Party Advisory"
],
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
}
],
"sourceIdentifier": "disclosure@vulncheck.com",
"vulnStatus": "Analyzed",
"weaknesses": [
{
"description": [
{
"lang": "en",
"value": "CWE-501"
}
],
"source": "disclosure@vulncheck.com",
"type": "Primary"
}
]
}
GHSA-76MC-F452-CXCM
Vulnerability from github – Published: 2026-06-15 19:59 – Updated: 2026-07-23 14:01Hook mutation of data.allowedTags / data.allowedAttributes permanently pollutes DEFAULT_ALLOWED_TAGS / DEFAULT_ALLOWED_ATTR
CWE: CWE-501 (Trust Boundary Violation — hook-scoped mutation leaks to global default sets) via CWE-693 (Protection Mechanism Failure — the default allow-list is silently widened for all subsequent sanitize calls)
Summary
The data.allowedTags and data.allowedAttributes fields passed to uponSanitizeElement and uponSanitizeAttribute hooks are direct references to the library's live ALLOWED_TAGS / ALLOWED_ATTR sets. For sanitize calls that don't supply an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array, those live sets are themselves direct references to the module-level DEFAULT_ALLOWED_TAGS / DEFAULT_ALLOWED_ATTR constants. A hook that mutates these fields — a natural-looking pattern for "allow X for this iteration" — permanently writes new entries into the default constants for the DOMPurify instance's lifetime. Every subsequent sanitize call that doesn't override the config inherits the widened defaults, so an attacker payload that uses the poisoned tag/attribute name survives sanitization. removeAllHooks(), clearConfig(), and even passing a fresh cfg: {} do not recover; only constructing a new DOMPurify instance does.
The maintainer's existing defense at src/purify.ts:696-700 explicitly clones DEFAULT_ALLOWED_TAGS before mutating it via cfg.ADD_TAGS (array form), demonstrating awareness of this exact class. The hook path remained uncovered.
Affected
- DOMPurify ≤ 3.4.5, including
mainat7996f1dc78eb8b7922388aed75d94a9f8fad9a36 - Any application that installs a hook on
uponSanitizeElementoruponSanitizeAttributethat writes todata.allowedTags[...] = trueordata.allowedAttributes[...] = trueand later sanitizes attacker-influenced content with default config (no explicitcfg.ALLOWED_TAGS/cfg.ALLOWED_ATTRarray)
Vulnerability details
[A] — data.allowedTags is a reference to ALLOWED_TAGS
src/purify.ts:1206-1209:
_executeHooks(hooks.uponSanitizeElement, currentNode, {
tagName,
allowedTags: ALLOWED_TAGS, // [A] direct reference; hook mutation
// mutates the very ALLOWED_TAGS the
// library checks on the next element
});
src/purify.ts:1494-1500 (the matching attribute hook):
const hookEvent = {
attrName: '',
attrValue: '',
keepAttr: true,
allowedAttributes: ALLOWED_ATTR, // [A'] same pattern
forceKeepAttr: undefined,
};
[B] — ALLOWED_TAGS = DEFAULT_ALLOWED_TAGS for default-cfg sanitize calls
src/purify.ts:527-531:
ALLOWED_TAGS =
objectHasOwnProperty(cfg, 'ALLOWED_TAGS') &&
arrayIsArray(cfg.ALLOWED_TAGS)
? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)
: DEFAULT_ALLOWED_TAGS; // [B] reference assignment; ALLOWED_TAGS
// IS the DEFAULT_ALLOWED_TAGS object
(The ALLOWED_ATTR = DEFAULT_ALLOWED_ATTR path at :532-536 is symmetric.)
The mismatch
A hook author who writes data.allowedTags['script'] = true reasonably expects per-call scope — the API name is "data", suggesting per-event payload. But [A] makes this a direct reference, and [B] makes that reference equal to the module-level default for the common default-cfg path. The hook's mutation therefore writes to a constant that every subsequent default-cfg sanitize call rebinds to.
The maintainer already recognized this class for the ADD_TAGS array path — src/purify.ts:696-700:
} else if (arrayIsArray(cfg.ADD_TAGS)) {
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
ALLOWED_TAGS = clone(ALLOWED_TAGS); // explicitly clone DEFAULT before
// mutating to avoid this pollution
}
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
}
The same defensive clone is missing from the hook code paths.
Proof of concept
// 1) fresh DOMPurify, default config — script is blocked
DOMPurify.sanitize('<svg><script>alert(1)</script></svg>');
// → "<svg></svg>"
// 2) install a hook that mutates data.allowedTags (natural-looking pattern)
DOMPurify.addHook('uponSanitizeElement', (node, data) => {
data.allowedTags['script'] = true;
});
// 3) one sanitize call WITH the hook — script survives (expected during the hook)
DOMPurify.sanitize('<svg><script>alert(1)</script></svg>');
// → "<svg><script>alert(1)</script></svg>"
// 4) remove the hook
DOMPurify.removeAllHooks();
DOMPurify.clearConfig();
// 5) sanitize attacker content with default config — POLLUTION PERSISTS
DOMPurify.sanitize('<svg><script>alert(1)</script></svg>');
// → "<svg><script>alert(1)</script></svg>" ← script survived without any hook
// 6) the only recovery: create a fresh DOMPurify instance
const fresh = DOMPurify(window);
fresh.sanitize('<svg><script>alert(1)</script></svg>');
// → "<svg></svg>" ← clean
Observed (Chromium 148.0.7778.96, DOMPurify HEAD 7996f1d):
| step | input | output | bypass? |
|---|---|---|---|
| 1 fresh baseline | <svg><script>__</script></svg> |
<svg></svg> |
no |
| 1b fresh baseline | <a onclick=__>x</a> |
<a>x</a> |
no |
| 2 with hook (script) | <svg><script>__</script></svg> |
<svg><script>__</script></svg> |
yes (expected) |
| 2b with hook (onclick) | <a onclick=__>x</a> |
<a onclick="__">x</a> |
yes (expected) |
3 after removeAllHooks() |
same | <svg><script>__</script></svg> |
YES (pollution) |
3b after removeAllHooks() |
same | <a onclick="__">x</a> |
YES (pollution) |
4 after clearConfig() |
same | <svg><script>__</script></svg> |
YES |
4b after clearConfig() |
same | <a onclick="__">x</a> |
YES |
5 explicit restrictive cfg.ALLOWED_TAGS=['svg'] |
same | <svg></svg> |
no (cloned set) |
| 6 back to no cfg | same | <svg><script>__</script></svg> |
YES |
| 6b back to no cfg | same | <a onclick="__">x</a> |
YES |
7 fresh DOMPurify(window) instance |
same | <svg></svg> |
no |
| 7b fresh instance | <a onclick=__>x</a> |
<a>x</a> |
no |
Impact
Direct
Any application using DOMPurify that has any registered hook with the pattern data.allowedTags[...] = true or data.allowedAttributes[...] = true. The hook need not be designed to be permissive — it might be intended to temporarily allow a custom tag for one specific element shape. After the hook has executed even once, every subsequent default-config sanitize call carries the widened defaults, including:
- attacker content rendered via separate code paths (e.g., the same library serving a comments section and a profile bio, where the bio uses the hook and the comments use plain
DOMPurify.sanitize(text)) - third-party libraries that call
DOMPurify.sanitizeon the same instance
The bypass survives DOMPurify.removeAllHooks() and DOMPurify.clearConfig() — the obvious "reset" calls a dev would reach for. Detection requires reading the DEFAULT_ALLOWED_TAGS / DEFAULT_ALLOWED_ATTR sets directly, which are not part of the public API.
Indirect / second-order
- Editor / preview libraries that compose with DOMPurify — if any consumer registers a hook that mutates
data.allowedTags, every other consumer's sanitize calls inherit the widening. - Test suites that exercise multiple sanitize configurations — once a test's hook pollutes the defaults, later tests that assume default behavior may pass with widened defaults and miss real regressions.
- Long-running servers (SSR, edge functions) that reuse a single DOMPurify instance — pollution accumulates over the process lifetime.
Why the existing maintainer defense for ADD_TAGS doesn't catch this
src/purify.ts:696-700 already documents awareness:
} else if (arrayIsArray(cfg.ADD_TAGS)) {
if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {
ALLOWED_TAGS = clone(ALLOWED_TAGS);
}
addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);
}
The clone-before-mutate pattern is exactly what's needed at the hook callsites (:1206-1209 and :1494-1500) but was not extended there. The new entries this report's bypass adds to the defaults survive the same way ADD_TAGS array entries would have survived before that fix landed.
Suggested fix
Three minimal-impact options, in order of preference:
- Hand the hook a defensive copy (most surgical):
ts
_executeHooks(hooks.uponSanitizeElement, currentNode, {
tagName,
allowedTags: { ...ALLOWED_TAGS }, // shallow copy; mutations stay scoped
});
Doc note: "data.allowedTags is a snapshot; to widen the live set, use cfg.ADD_TAGS or set the value to true in the snapshot and check the snapshot from a subsequent attribute hook." Hooks that read it for inspection still work; hooks that intended cross-call mutation must be rewritten to use a proper config path (which is the correct API anyway).
-
Clone-on-write inside the hook path, mirroring the existing
ADD_TAGSdefense at:696-700: detect thatALLOWED_TAGS === DEFAULT_ALLOWED_TAGSafter the hook returns, and if so, replace it with a clone for subsequent processing. This preserves the live-mutation semantics for in-call effects while preventing cross-call leakage. -
Lazy-clone
ALLOWED_TAGS/ALLOWED_ATTRfrom defaults on first mutation: install a Proxy or accessor that triggers a clone before mutation. Largest surface area, but bulletproof.
Option (1) is the cleanest API contract: hook event objects should be event-local, never references to library-internal state.
{
"affected": [
{
"package": {
"ecosystem": "npm",
"name": "dompurify"
},
"ranges": [
{
"events": [
{
"introduced": "0"
},
{
"fixed": "3.4.7"
}
],
"type": "ECOSYSTEM"
}
]
}
],
"aliases": [
"CVE-2026-65902"
],
"database_specific": {
"cwe_ids": [
"CWE-501",
"CWE-693"
],
"github_reviewed": true,
"github_reviewed_at": "2026-06-15T19:59:09Z",
"nvd_published_at": null,
"severity": "MODERATE"
},
"details": "# Hook mutation of `data.allowedTags` / `data.allowedAttributes` permanently pollutes `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR`\n\n**CWE**: CWE-501 (Trust Boundary Violation \u2014 hook-scoped mutation leaks to global default sets) via CWE-693 (Protection Mechanism Failure \u2014 the default allow-list is silently widened for all subsequent sanitize calls)\n\n## Summary\n\nThe `data.allowedTags` and `data.allowedAttributes` fields passed to `uponSanitizeElement` and `uponSanitizeAttribute` hooks are **direct references** to the library\u0027s live `ALLOWED_TAGS` / `ALLOWED_ATTR` sets. For sanitize calls that don\u0027t supply an explicit `cfg.ALLOWED_TAGS` / `cfg.ALLOWED_ATTR` array, those live sets are themselves direct references to the module-level `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR` constants. A hook that mutates these fields \u2014 a natural-looking pattern for \"allow `X` for this iteration\" \u2014 permanently writes new entries into the default constants for the DOMPurify instance\u0027s lifetime. Every subsequent sanitize call that doesn\u0027t override the config inherits the widened defaults, so an attacker payload that uses the poisoned tag/attribute name survives sanitization. `removeAllHooks()`, `clearConfig()`, and even passing a fresh `cfg: {}` do not recover; only constructing a new DOMPurify instance does.\n\nThe maintainer\u0027s existing defense at `src/purify.ts:696-700` explicitly clones `DEFAULT_ALLOWED_TAGS` before mutating it via `cfg.ADD_TAGS` (array form), demonstrating awareness of this exact class. The hook path remained uncovered.\n\n## Affected\n\n- DOMPurify \u2264 3.4.5, including `main` at `7996f1dc78eb8b7922388aed75d94a9f8fad9a36`\n- Any application that installs a hook on `uponSanitizeElement` or `uponSanitizeAttribute` that writes to `data.allowedTags[...] = true` or `data.allowedAttributes[...] = true` and later sanitizes attacker-influenced content with default config (no explicit `cfg.ALLOWED_TAGS` / `cfg.ALLOWED_ATTR` array)\n\n## Vulnerability details\n\n### [A] \u2014 `data.allowedTags` is a reference to `ALLOWED_TAGS`\n\n`src/purify.ts:1206-1209`:\n\n```ts\n_executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: ALLOWED_TAGS, // [A] direct reference; hook mutation\n // mutates the very ALLOWED_TAGS the\n // library checks on the next element\n});\n```\n\n`src/purify.ts:1494-1500` (the matching attribute hook):\n\n```ts\nconst hookEvent = {\n attrName: \u0027\u0027,\n attrValue: \u0027\u0027,\n keepAttr: true,\n allowedAttributes: ALLOWED_ATTR, // [A\u0027] same pattern\n forceKeepAttr: undefined,\n};\n```\n\n### [B] \u2014 `ALLOWED_TAGS = DEFAULT_ALLOWED_TAGS` for default-cfg sanitize calls\n\n`src/purify.ts:527-531`:\n\n```ts\nALLOWED_TAGS =\n objectHasOwnProperty(cfg, \u0027ALLOWED_TAGS\u0027) \u0026\u0026\n arrayIsArray(cfg.ALLOWED_TAGS)\n ? addToSet({}, cfg.ALLOWED_TAGS, transformCaseFunc)\n : DEFAULT_ALLOWED_TAGS; // [B] reference assignment; ALLOWED_TAGS\n // IS the DEFAULT_ALLOWED_TAGS object\n```\n\n(The `ALLOWED_ATTR = DEFAULT_ALLOWED_ATTR` path at `:532-536` is symmetric.)\n\n### The mismatch\n\nA hook author who writes `data.allowedTags[\u0027script\u0027] = true` reasonably expects per-call scope \u2014 the API name is *\"data\"*, suggesting per-event payload. But [A] makes this a direct reference, and [B] makes that reference equal to the module-level default for the common default-cfg path. The hook\u0027s mutation therefore writes to a *constant* that every subsequent default-cfg sanitize call rebinds to.\n\nThe maintainer already recognized this class for the `ADD_TAGS` array path \u2014 `src/purify.ts:696-700`:\n\n```ts\n} else if (arrayIsArray(cfg.ADD_TAGS)) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS); // explicitly clone DEFAULT before\n // mutating to avoid this pollution\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n}\n```\n\nThe same defensive clone is missing from the hook code paths.\n\n## Proof of concept\n\n```js\n// 1) fresh DOMPurify, default config \u2014 script is blocked\nDOMPurify.sanitize(\u0027\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\u0027);\n// \u2192 \"\u003csvg\u003e\u003c/svg\u003e\"\n\n// 2) install a hook that mutates data.allowedTags (natural-looking pattern)\nDOMPurify.addHook(\u0027uponSanitizeElement\u0027, (node, data) =\u003e {\n data.allowedTags[\u0027script\u0027] = true;\n});\n\n// 3) one sanitize call WITH the hook \u2014 script survives (expected during the hook)\nDOMPurify.sanitize(\u0027\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\u0027);\n// \u2192 \"\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\"\n\n// 4) remove the hook\nDOMPurify.removeAllHooks();\nDOMPurify.clearConfig();\n\n// 5) sanitize attacker content with default config \u2014 POLLUTION PERSISTS\nDOMPurify.sanitize(\u0027\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\u0027);\n// \u2192 \"\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\" \u2190 script survived without any hook\n\n// 6) the only recovery: create a fresh DOMPurify instance\nconst fresh = DOMPurify(window);\nfresh.sanitize(\u0027\u003csvg\u003e\u003cscript\u003ealert(1)\u003c/script\u003e\u003c/svg\u003e\u0027);\n// \u2192 \"\u003csvg\u003e\u003c/svg\u003e\" \u2190 clean\n```\n\nObserved (Chromium 148.0.7778.96, DOMPurify HEAD `7996f1d`):\n\n| step | input | output | bypass? |\n|---|---|---|---|\n| 1 fresh baseline | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | `\u003csvg\u003e\u003c/svg\u003e` | no |\n| 1b fresh baseline | `\u003ca onclick=__\u003ex\u003c/a\u003e` | `\u003ca\u003ex\u003c/a\u003e` | no |\n| 2 with hook (script) | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | yes (expected) |\n| 2b with hook (onclick) | `\u003ca onclick=__\u003ex\u003c/a\u003e` | `\u003ca onclick=\"__\"\u003ex\u003c/a\u003e` | yes (expected) |\n| 3 after `removeAllHooks()` | same | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | **YES (pollution)** |\n| 3b after `removeAllHooks()` | same | `\u003ca onclick=\"__\"\u003ex\u003c/a\u003e` | **YES (pollution)** |\n| 4 after `clearConfig()` | same | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | **YES** |\n| 4b after `clearConfig()` | same | `\u003ca onclick=\"__\"\u003ex\u003c/a\u003e` | **YES** |\n| 5 explicit restrictive `cfg.ALLOWED_TAGS=[\u0027svg\u0027]` | same | `\u003csvg\u003e\u003c/svg\u003e` | no (cloned set) |\n| 6 back to no cfg | same | `\u003csvg\u003e\u003cscript\u003e__\u003c/script\u003e\u003c/svg\u003e` | **YES** |\n| 6b back to no cfg | same | `\u003ca onclick=\"__\"\u003ex\u003c/a\u003e` | **YES** |\n| 7 fresh `DOMPurify(window)` instance | same | `\u003csvg\u003e\u003c/svg\u003e` | no |\n| 7b fresh instance | `\u003ca onclick=__\u003ex\u003c/a\u003e` | `\u003ca\u003ex\u003c/a\u003e` | no |\n\n## Impact\n\n### Direct\n\nAny application using `DOMPurify` that has any registered hook with the pattern `data.allowedTags[...] = true` or `data.allowedAttributes[...] = true`. The hook need not be designed to be permissive \u2014 it might be intended to *temporarily* allow a custom tag for one specific element shape. After the hook has executed even once, every subsequent default-config sanitize call carries the widened defaults, including:\n\n- attacker content rendered via separate code paths (e.g., the same library serving a comments section and a profile bio, where the bio uses the hook and the comments use plain `DOMPurify.sanitize(text)`)\n- third-party libraries that call `DOMPurify.sanitize` on the same instance\n\nThe bypass survives `DOMPurify.removeAllHooks()` and `DOMPurify.clearConfig()` \u2014 the obvious \"reset\" calls a dev would reach for. Detection requires reading the `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR` sets directly, which are not part of the public API.\n\n### Indirect / second-order\n\n- **Editor / preview libraries** that compose with DOMPurify \u2014 if any consumer registers a hook that mutates `data.allowedTags`, every other consumer\u0027s sanitize calls inherit the widening.\n- **Test suites** that exercise multiple sanitize configurations \u2014 once a test\u0027s hook pollutes the defaults, later tests that assume default behavior may pass with widened defaults and miss real regressions.\n- **Long-running servers** (SSR, edge functions) that reuse a single DOMPurify instance \u2014 pollution accumulates over the process lifetime.\n\n### Why the existing maintainer defense for `ADD_TAGS` doesn\u0027t catch this\n\n`src/purify.ts:696-700` already documents awareness:\n\n```ts\n} else if (arrayIsArray(cfg.ADD_TAGS)) {\n if (ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS) {\n ALLOWED_TAGS = clone(ALLOWED_TAGS);\n }\n addToSet(ALLOWED_TAGS, cfg.ADD_TAGS, transformCaseFunc);\n}\n```\n\nThe clone-before-mutate pattern is exactly what\u0027s needed at the hook callsites (`:1206-1209` and `:1494-1500`) but was not extended there. The new entries this report\u0027s bypass adds to the defaults survive the same way `ADD_TAGS` array entries would have survived before that fix landed.\n\n## Suggested fix\n\nThree minimal-impact options, in order of preference:\n\n1. **Hand the hook a defensive copy** (most surgical):\n\n ```ts\n _executeHooks(hooks.uponSanitizeElement, currentNode, {\n tagName,\n allowedTags: { ...ALLOWED_TAGS }, // shallow copy; mutations stay scoped\n });\n ```\n\n Doc note: \"`data.allowedTags` is a snapshot; to widen the live set, use `cfg.ADD_TAGS` or set the value to true in the snapshot and check the snapshot from a subsequent attribute hook.\" Hooks that read it for inspection still work; hooks that intended cross-call mutation must be rewritten to use a proper config path (which is the correct API anyway).\n\n2. **Clone-on-write inside the hook path**, mirroring the existing `ADD_TAGS` defense at `:696-700`: detect that `ALLOWED_TAGS === DEFAULT_ALLOWED_TAGS` after the hook returns, and if so, replace it with a clone for subsequent processing. This preserves the live-mutation semantics for in-call effects while preventing cross-call leakage.\n\n3. **Lazy-clone `ALLOWED_TAGS`/`ALLOWED_ATTR` from defaults on first mutation**: install a Proxy or accessor that triggers a clone before mutation. Largest surface area, but bulletproof.\n\nOption (1) is the cleanest API contract: hook event objects should be event-local, never references to library-internal state.",
"id": "GHSA-76mc-f452-cxcm",
"modified": "2026-07-23T14:01:17Z",
"published": "2026-06-15T19:59:09Z",
"references": [
{
"type": "WEB",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
},
{
"type": "PACKAGE",
"url": "https://github.com/cure53/DOMPurify"
}
],
"schema_version": "1.4.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"type": "CVSS_V3"
}
],
"summary": "DOMPurify: Hook mutation of `data.allowedTags` / `data.allowedAttributes` permanently pollutes `DEFAULT_ALLOWED_TAGS` / `DEFAULT_ALLOWED_ATTR`"
}
RHSA-2026:58500
Vulnerability from csaf_redhat - Published: 2026-08-22 14:02 - Updated: 2026-08-24 11:17A flaw was found in DOMPurify. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the `ALLOWED_ATTR` allowlist is not properly cloned. This allows an attacker to register a hook that can permanently modify the shared allowlist, enabling the conditional allowance of dangerous attributes. Consequently, an attacker can submit untrusted content that inherits the polluted allowlist, leading to stored Cross-site Scripting (XSS) and the execution of event handlers.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify where the clearConfig() function does not properly reset the retained Trusted Types policy. This can lead to a DOMPurify instance, when reused across different security contexts, remaining bound to a previously supplied and potentially unsafe policy. An attacker could leverage this to execute malicious scripts, resulting in client-side arbitrary code execution.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. This cross-site scripting (XSS) vulnerability exists in IN_PLACE mode, where the software trusts attacker-controlled nodeName on live non-form nodes. A remote attacker can supply hostile live Document Object Model (DOM) objects with script children. These scripts can execute when the sanitized tree is inserted into a live document, potentially leading to information disclosure or arbitrary code execution.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. An attacker can exploit a vulnerability in how DOMPurify handles its sanitization hooks when default configurations are used. By manipulating the uponSanitizeElement or uponSanitizeAttribute hooks, an attacker can permanently alter the allowed HTML tags and attributes. This allows malicious content to bypass sanitization, potentially leading to cross-site scripting (XSS) attacks and compromising the integrity of web applications.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. This vulnerability allows a remote attacker to perform cross-site scripting (XSS) by exploiting a state leakage issue. Specifically, function predicates used for adding attributes or tags during sanitization can persist across multiple calls to the `sanitize()` function. This persistence can lead to the approval of attacker-controlled attributes or tags, bypassing security filters and enabling the execution of malicious scripts in a user's browser.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. An attacker can bypass URI validation by providing a specially crafted predicate function via EXTRA_ELEMENT_HANDLING.attributeCheck. This allows unsafe protocols, such as javascript:, to persist after sanitization, potentially leading to DOM-based cross-site scripting (XSS) when a user activates a malicious link.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. This prototype pollution vulnerability, specifically when operating in USE_PROFILES mode, allows a remote attacker to bypass attribute filtering. By manipulating Array.prototype properties, an attacker can cause DOMPurify to accept event handlers as allowed attributes, leading to DOM-based Cross-Site Scripting (XSS) when the sanitized markup is rendered. This could result in the execution of malicious scripts in the user's browser.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. This vulnerability, a type of Cross-Site Scripting (XSS), occurs when HTML that has been sanitized is reinserted into specific parsing contexts using innerHTML with certain HTML elements like `script` or `iframe`. An attacker can craft malicious input that, during re-parsing, can bypass the sanitization and execute arbitrary JavaScript code in the user's browser.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana12-4-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
{
"document": {
"aggregate_severity": {
"namespace": "https://access.redhat.com/security/updates/classification/",
"text": "Moderate"
},
"category": "csaf_security_advisory",
"csaf_version": "2.0",
"distribution": {
"text": "Copyright \u00a9 Red Hat, Inc. All rights reserved.",
"tlp": {
"label": "WHITE",
"url": "https://www.first.org/tlp/"
}
},
"lang": "en",
"notes": [
{
"category": "summary",
"text": "An update for Red Hat Hardened Images RPMs is now available.",
"title": "Topic"
},
{
"category": "general",
"text": "This update includes the following RPMs:\n\ngrafana12.4:\n * grafana12.4-12.4.8-0.1.2.hum1 (aarch64, x86_64)\n * grafana12.4-12.4.8-0.1.2.hum1.src (src)\n\nSecurity Fix(es):\n\ngrafana12.4:\n * CVE-2026-65898\n * CVE-2026-65899\n * CVE-2026-65901\n * CVE-2026-65902\n * CVE-2026-65911\n * CVE-2026-65912\n * CVE-2026-65913\n * CVE-2026-65914",
"title": "Details"
},
{
"category": "legal_disclaimer",
"text": "This content is licensed under the Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/). If you distribute this content, or a modified version of it, you must provide attribution to Red Hat Inc. and provide a link to the original.",
"title": "Terms of Use"
}
],
"publisher": {
"category": "vendor",
"contact_details": "https://access.redhat.com/security/team/contact/",
"issuing_authority": "Red Hat Product Security is responsible for vulnerability handling across all Red Hat products and services.",
"name": "Red Hat Product Security",
"namespace": "https://www.redhat.com"
},
"references": [
{
"category": "self",
"summary": "https://access.redhat.com/errata/RHSA-2026:58500",
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65898",
"url": "https://access.redhat.com/security/cve/CVE-2026-65898"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65899",
"url": "https://access.redhat.com/security/cve/CVE-2026-65899"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65901",
"url": "https://access.redhat.com/security/cve/CVE-2026-65901"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65902",
"url": "https://access.redhat.com/security/cve/CVE-2026-65902"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65911",
"url": "https://access.redhat.com/security/cve/CVE-2026-65911"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65912",
"url": "https://access.redhat.com/security/cve/CVE-2026-65912"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65913",
"url": "https://access.redhat.com/security/cve/CVE-2026-65913"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65914",
"url": "https://access.redhat.com/security/cve/CVE-2026-65914"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/updates/classification/",
"url": "https://access.redhat.com/security/updates/classification/"
},
{
"category": "external",
"summary": "https://images.redhat.com/",
"url": "https://images.redhat.com/"
},
{
"category": "self",
"summary": "Canonical URL",
"url": "https://security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58500.json"
}
],
"title": "Red Hat Security Advisory: Red Hat Hardened Images RPMs Security Update",
"tracking": {
"current_release_date": "2026-08-24T11:17:32+00:00",
"generator": {
"date": "2026-08-24T11:17:32+00:00",
"engine": {
"name": "Red Hat SDEngine",
"version": "5.3.16"
}
},
"id": "RHSA-2026:58500",
"initial_release_date": "2026-08-22T14:02:11+00:00",
"revision_history": [
{
"date": "2026-08-22T14:02:11+00:00",
"number": "1",
"summary": "Initial version"
},
{
"date": "2026-08-22T14:04:14+00:00",
"number": "2",
"summary": "Last updated version"
},
{
"date": "2026-08-24T11:17:32+00:00",
"number": "3",
"summary": "Last generated version"
}
],
"status": "final",
"version": "3"
}
},
"product_tree": {
"branches": [
{
"branches": [
{
"branches": [
{
"category": "product_name",
"name": "Red Hat Hardened Images",
"product": {
"name": "Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images",
"product_identification_helper": {
"cpe": "cpe:/a:redhat:hummingbird:1"
}
}
}
],
"category": "product_family",
"name": "Red Hat Hardened Images"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana12-4-main@aarch64",
"product": {
"name": "grafana12-4-main@aarch64",
"product_id": "grafana12-4-main@aarch64",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana12.4@12.4.8-0.1.2.hum1?arch=aarch64\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-aarch64-rpms"
}
}
}
],
"category": "architecture",
"name": "aarch64"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana12-4-main@src",
"product": {
"name": "grafana12-4-main@src",
"product_id": "grafana12-4-main@src",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana12.4@12.4.8-0.1.2.hum1?arch=src\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-source-rpms"
}
}
}
],
"category": "architecture",
"name": "src"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana12-4-main@x86_64",
"product": {
"name": "grafana12-4-main@x86_64",
"product_id": "grafana12-4-main@x86_64",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana12.4@12.4.8-0.1.2.hum1?arch=x86_64\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-x86_64-rpms"
}
}
}
],
"category": "architecture",
"name": "x86_64"
}
],
"category": "vendor",
"name": "Red Hat"
}
],
"relationships": [
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana12-4-main@aarch64 as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana12-4-main@aarch64"
},
"product_reference": "grafana12-4-main@aarch64",
"relates_to_product_reference": "Red Hat Hardened Images"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana12-4-main@src as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana12-4-main@src"
},
"product_reference": "grafana12-4-main@src",
"relates_to_product_reference": "Red Hat Hardened Images"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana12-4-main@x86_64 as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana12-4-main@x86_64"
},
"product_reference": "grafana12-4-main@x86_64",
"relates_to_product_reference": "Red Hat Hardened Images"
}
]
},
"vulnerabilities": [
{
"cve": "CVE-2026-65898",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:36.457690+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506436"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the `ALLOWED_ATTR` allowlist is not properly cloned. This allows an attacker to register a hook that can permanently modify the shared allowlist, enabling the conditional allowance of dangerous attributes. Consequently, an attacker can submit untrusted content that inherits the polluted allowlist, leading to stored Cross-site Scripting (XSS) and the execution of event handlers.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-site scripting via permanent attribute allowlist pollution",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This vulnerability in DOMPurify allows for cross-site scripting due to improper handling of the `ALLOWED_ATTR` allowlist. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the allowlist can be permanently mutated, enabling attackers to inject dangerous attributes and execute stored XSS.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65898"
},
{
"category": "external",
"summary": "RHBZ#2506436",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506436"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65898",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65898"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65898",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65898"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cmwh-pvxp-8882",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cmwh-pvxp-8882"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-permanent-attribute-allowlist-pollution-via-setconfig",
"url": "https://www.vulncheck.com/advisories/dompurify-before-permanent-attribute-allowlist-pollution-via-setconfig"
}
],
"release_date": "2026-07-23T13:16:17.715000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-site scripting via permanent attribute allowlist pollution"
},
{
"cve": "CVE-2026-65899",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:09.534995+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506428"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify where the clearConfig() function does not properly reset the retained Trusted Types policy. This can lead to a DOMPurify instance, when reused across different security contexts, remaining bound to a previously supplied and potentially unsafe policy. An attacker could leverage this to execute malicious scripts, resulting in client-side arbitrary code execution.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Client-side arbitrary code execution due to improper Trusted Types policy reset",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This flaw in DOMPurify, concerning improper Trusted Types policy reset, could lead to client-side arbitrary code execution. However, Red Hat products are not affected by this vulnerability, as indicated by the delegated resolution for the `ruff` component within Red Hat Hard Hat Images.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65899"
},
{
"category": "external",
"summary": "RHBZ#2506428",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506428"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65899",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65899"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65899",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65899"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/commit/825e617753ac1169306a542d3174a77f717a0cf6",
"url": "https://github.com/cure53/DOMPurify/commit/825e617753ac1169306a542d3174a77f717a0cf6"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-vxr8-fq34-vvx9",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-vxr8-fq34-vvx9"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-trusted-types-policy-state-contamination",
"url": "https://www.vulncheck.com/advisories/dompurify-before-trusted-types-policy-state-contamination"
}
],
"release_date": "2026-07-23T13:16:18.389000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Client-side arbitrary code execution due to improper Trusted Types policy reset"
},
{
"cve": "CVE-2026-65901",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:23.186814+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506432"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. This cross-site scripting (XSS) vulnerability exists in IN_PLACE mode, where the software trusts attacker-controlled nodeName on live non-form nodes. A remote attacker can supply hostile live Document Object Model (DOM) objects with script children. These scripts can execute when the sanitized tree is inserted into a live document, potentially leading to information disclosure or arbitrary code execution.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-site scripting vulnerability via attacker-controlled nodeName",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This cross-site scripting (XSS) vulnerability in DOMPurify arises when the library is used with `IN_PLACE: true` on attacker-supplied live DOM nodes. An attacker can manipulate a script child node\u0027s `nodeName` to bypass sanitization, leading to arbitrary script execution when the sanitized tree is inserted into a live document. This impacts Red Hat products that process untrusted live DOM content using DOMPurify in this specific configuration.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65901"
},
{
"category": "external",
"summary": "RHBZ#2506432",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506432"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65901",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65901"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65901",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65901"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-x4vx-rjvf-j5p4",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-x4vx-rjvf-j5p4"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-cross-site-scripting-via-in-place-nodename",
"url": "https://www.vulncheck.com/advisories/dompurify-cross-site-scripting-via-in-place-nodename"
}
],
"release_date": "2026-07-23T13:16:19.721000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-site scripting vulnerability via attacker-controlled nodeName"
},
{
"cve": "CVE-2026-65902",
"cwe": {
"id": "CWE-915",
"name": "Improperly Controlled Modification of Dynamically-Determined Object Attributes"
},
"discovery_date": "2026-07-23T14:01:18.981314+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506431"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. An attacker can exploit a vulnerability in how DOMPurify handles its sanitization hooks when default configurations are used. By manipulating the uponSanitizeElement or uponSanitizeAttribute hooks, an attacker can permanently alter the allowed HTML tags and attributes. This allows malicious content to bypass sanitization, potentially leading to cross-site scripting (XSS) attacks and compromising the integrity of web applications.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Sanitization bypass via hook manipulation",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This flaw in DOMPurify allows an attacker to bypass sanitization by manipulating internal hooks, leading to potential cross-site scripting (XSS) vulnerabilities. The issue permanently alters the default allow-lists for the DOMPurify instance when default configurations are used. Red Hat products, including Red Hat Hardened Images, are not affected by this vulnerability.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65902"
},
{
"category": "external",
"summary": "RHBZ#2506431",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506431"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65902",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65902"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65902",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65902"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36",
"url": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags",
"url": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags"
}
],
"release_date": "2026-07-23T13:16:20.528000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Sanitization bypass via hook manipulation"
},
{
"cve": "CVE-2026-65911",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:29.460365+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506434"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. This vulnerability allows a remote attacker to perform cross-site scripting (XSS) by exploiting a state leakage issue. Specifically, function predicates used for adding attributes or tags during sanitization can persist across multiple calls to the `sanitize()` function. This persistence can lead to the approval of attacker-controlled attributes or tags, bypassing security filters and enabling the execution of malicious scripts in a user\u0027s browser.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "DOMPurify: DOMPurify: Cross-site scripting due to state leakage in sanitization.",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "Moderate: A cross-site scripting (XSS) vulnerability was found in DOMPurify. This flaw occurs when DOMPurify.sanitize() is called on the same instance with function predicates for ADD_ATTR or ADD_TAGS, followed by a call using array predicates. This specific usage pattern can lead to the persistence of previously defined function handlers, allowing malicious attributes or tags to bypass sanitization. Red Hat products that utilize DOMPurify in such a dynamic configuration may be susceptible to XSS attacks.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65911"
},
{
"category": "external",
"summary": "RHBZ#2506434",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506434"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65911",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65911"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65911",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65911"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-9p3w-6h5p-cv75",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-9p3w-6h5p-cv75"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-xss-via-add-attr-add-tags-state-leakage",
"url": "https://www.vulncheck.com/advisories/dompurify-before-xss-via-add-attr-add-tags-state-leakage"
}
],
"release_date": "2026-07-23T13:16:22.748000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "To mitigate this issue, applications utilizing DOMPurify should avoid reusing the same DOMPurify instance when dynamically switching between function and array predicates for ADD_ATTR or ADD_TAGS. Instead, a new DOMPurify instance should be initialized whenever the type of these predicates changes to ensure proper state reset.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "DOMPurify: DOMPurify: Cross-site scripting due to state leakage in sanitization."
},
{
"cve": "CVE-2026-65912",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:05.987293+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506427"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. An attacker can bypass URI validation by providing a specially crafted predicate function via EXTRA_ELEMENT_HANDLING.attributeCheck. This allows unsafe protocols, such as javascript:, to persist after sanitization, potentially leading to DOM-based cross-site scripting (XSS) when a user activates a malicious link.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: URI validation bypass leads to cross-site scripting",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This cross-site scripting (XSS) vulnerability in DOMPurify arises when applications configure ADD_ATTR as a predicate function through EXTRA_ELEMENT_HANDLING.attributeCheck. An attacker could exploit this by crafting malicious input that bypasses URI validation, leading to the execution of unsafe javascript: protocols upon user interaction with a crafted link. This requires a specific, non-default configuration of the DOMPurify library within affected Red Hat products.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65912"
},
{
"category": "external",
"summary": "RHBZ#2506427",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506427"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65912",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65912"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65912",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65912"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cjmm-f4jc-qw8r",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cjmm-f4jc-qw8r"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-uri-validation-bypass-via-add-attr",
"url": "https://www.vulncheck.com/advisories/dompurify-before-uri-validation-bypass-via-add-attr"
}
],
"release_date": "2026-07-23T13:16:23.406000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: URI validation bypass leads to cross-site scripting"
},
{
"cve": "CVE-2026-65913",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:12.968162+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506429"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. This prototype pollution vulnerability, specifically when operating in USE_PROFILES mode, allows a remote attacker to bypass attribute filtering. By manipulating Array.prototype properties, an attacker can cause DOMPurify to accept event handlers as allowed attributes, leading to DOM-based Cross-Site Scripting (XSS) when the sanitized markup is rendered. This could result in the execution of malicious scripts in the user\u0027s browser.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-Site Scripting (XSS) via prototype pollution in USE_PROFILES mode",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This flaw in DOMPurify allows for Cross-Site Scripting (XSS) when the library is configured to use `USE_PROFILES` mode. An attacker could exploit a prototype pollution vulnerability to bypass attribute filtering, enabling the execution of arbitrary JavaScript within the user\u0027s browser upon rendering of sanitized markup. This impacts Red Hat products that integrate DOMPurify for HTML sanitization in web applications and explicitly enable the vulnerable `USE_PROFILES` mode.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65913"
},
{
"category": "external",
"summary": "RHBZ#2506429",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506429"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65913",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65913"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65913",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65913"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cj63-jhhr-wcxv",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cj63-jhhr-wcxv"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-prototype-pollution-via-use-profiles",
"url": "https://www.vulncheck.com/advisories/dompurify-before-prototype-pollution-via-use-profiles"
}
],
"release_date": "2026-07-23T13:16:24.097000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-Site Scripting (XSS) via prototype pollution in USE_PROFILES mode"
},
{
"cve": "CVE-2026-65914",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:16.089459+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506430"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. This vulnerability, a type of Cross-Site Scripting (XSS), occurs when HTML that has been sanitized is reinserted into specific parsing contexts using innerHTML with certain HTML elements like `script` or `iframe`. An attacker can craft malicious input that, during re-parsing, can bypass the sanitization and execute arbitrary JavaScript code in the user\u0027s browser.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-Site Scripting vulnerability allows arbitrary code execution",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This Moderate-impact mutation-XSS vulnerability in DOMPurify allows for arbitrary code execution when sanitized HTML is reinserted into specific parsing contexts. However, Red Hat Hardened Images are not affected by this flaw.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65914"
},
{
"category": "external",
"summary": "RHBZ#2506430",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506430"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65914",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65914"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65914",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65914"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-h8r8-wccr-v5f2",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-h8r8-wccr-v5f2"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-mutation-xss-via-re-contextualization",
"url": "https://www.vulncheck.com/advisories/dompurify-before-mutation-xss-via-re-contextualization"
}
],
"release_date": "2026-07-23T13:16:24.784000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:02:11+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58500"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "UNCHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana12-4-main@aarch64",
"Red Hat Hardened Images:grafana12-4-main@src",
"Red Hat Hardened Images:grafana12-4-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-Site Scripting vulnerability allows arbitrary code execution"
}
]
}
RHSA-2026:58502
Vulnerability from csaf_redhat - Published: 2026-08-22 14:06 - Updated: 2026-08-24 11:15A flaw was found in DOMPurify. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the `ALLOWED_ATTR` allowlist is not properly cloned. This allows an attacker to register a hook that can permanently modify the shared allowlist, enabling the conditional allowance of dangerous attributes. Consequently, an attacker can submit untrusted content that inherits the polluted allowlist, leading to stored Cross-site Scripting (XSS) and the execution of event handlers.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify where the clearConfig() function does not properly reset the retained Trusted Types policy. This can lead to a DOMPurify instance, when reused across different security contexts, remaining bound to a previously supplied and potentially unsafe policy. An attacker could leverage this to execute malicious scripts, resulting in client-side arbitrary code execution.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. This cross-site scripting (XSS) vulnerability exists in IN_PLACE mode, where the software trusts attacker-controlled nodeName on live non-form nodes. A remote attacker can supply hostile live Document Object Model (DOM) objects with script children. These scripts can execute when the sanitized tree is inserted into a live document, potentially leading to information disclosure or arbitrary code execution.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
A flaw was found in DOMPurify. An attacker can exploit a vulnerability in how DOMPurify handles its sanitization hooks when default configurations are used. By manipulating the uponSanitizeElement or uponSanitizeAttribute hooks, an attacker can permanently alter the allowed HTML tags and attributes. This allows malicious content to bypass sanitization, potentially leading to cross-site scripting (XSS) attacks and compromising the integrity of web applications.
| Product | Identifier | Version | Remediation |
|---|---|---|---|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@aarch64 | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@src | — |
Vendor Fix
fix
Workaround
|
|
| Unresolved product id: Red Hat Hardened Images:grafana13-1-main@x86_64 | — |
Vendor Fix
fix
Workaround
|
{
"document": {
"aggregate_severity": {
"namespace": "https://access.redhat.com/security/updates/classification/",
"text": "Moderate"
},
"category": "csaf_security_advisory",
"csaf_version": "2.0",
"distribution": {
"text": "Copyright \u00a9 Red Hat, Inc. All rights reserved.",
"tlp": {
"label": "WHITE",
"url": "https://www.first.org/tlp/"
}
},
"lang": "en",
"notes": [
{
"category": "summary",
"text": "An update for Red Hat Hardened Images RPMs is now available.",
"title": "Topic"
},
{
"category": "general",
"text": "This update includes the following RPMs:\n\ngrafana13.1:\n * grafana13.1-13.1.3-0.1.3.hum1 (aarch64, x86_64)\n * grafana13.1-13.1.3-0.1.3.hum1.src (src)",
"title": "Details"
},
{
"category": "legal_disclaimer",
"text": "This content is licensed under the Creative Commons Attribution 4.0 International License (https://creativecommons.org/licenses/by/4.0/). If you distribute this content, or a modified version of it, you must provide attribution to Red Hat Inc. and provide a link to the original.",
"title": "Terms of Use"
}
],
"publisher": {
"category": "vendor",
"contact_details": "https://access.redhat.com/security/team/contact/",
"issuing_authority": "Red Hat Product Security is responsible for vulnerability handling across all Red Hat products and services.",
"name": "Red Hat Product Security",
"namespace": "https://www.redhat.com"
},
"references": [
{
"category": "self",
"summary": "https://access.redhat.com/errata/RHSA-2026:58502",
"url": "https://access.redhat.com/errata/RHSA-2026:58502"
},
{
"category": "external",
"summary": "https://images.redhat.com/",
"url": "https://images.redhat.com/"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65902",
"url": "https://access.redhat.com/security/cve/CVE-2026-65902"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/updates/classification/",
"url": "https://access.redhat.com/security/updates/classification/"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65898",
"url": "https://access.redhat.com/security/cve/CVE-2026-65898"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65899",
"url": "https://access.redhat.com/security/cve/CVE-2026-65899"
},
{
"category": "external",
"summary": "https://access.redhat.com/security/cve/CVE-2026-65901",
"url": "https://access.redhat.com/security/cve/CVE-2026-65901"
},
{
"category": "self",
"summary": "Canonical URL",
"url": "https://security.access.redhat.com/data/csaf/v2/advisories/2026/rhsa-2026_58502.json"
}
],
"title": "Red Hat Security Advisory: Red Hat Hardened Images RPMs bug fix and enhancement update",
"tracking": {
"current_release_date": "2026-08-24T11:15:14+00:00",
"generator": {
"date": "2026-08-24T11:15:14+00:00",
"engine": {
"name": "Red Hat SDEngine",
"version": "5.3.16"
}
},
"id": "RHSA-2026:58502",
"initial_release_date": "2026-08-22T14:06:09+00:00",
"revision_history": [
{
"date": "2026-08-22T14:06:09+00:00",
"number": "1",
"summary": "Initial version"
},
{
"date": "2026-08-22T14:35:01+00:00",
"number": "2",
"summary": "Last updated version"
},
{
"date": "2026-08-24T11:15:14+00:00",
"number": "3",
"summary": "Last generated version"
}
],
"status": "final",
"version": "3"
}
},
"product_tree": {
"branches": [
{
"branches": [
{
"branches": [
{
"category": "product_name",
"name": "Red Hat Hardened Images",
"product": {
"name": "Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images",
"product_identification_helper": {
"cpe": "cpe:/a:redhat:hummingbird:1"
}
}
}
],
"category": "product_family",
"name": "Red Hat Hardened Images"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana13-1-main@aarch64",
"product": {
"name": "grafana13-1-main@aarch64",
"product_id": "grafana13-1-main@aarch64",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana13.1@13.1.3-0.1.3.hum1?arch=aarch64\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-aarch64-rpms"
}
}
}
],
"category": "architecture",
"name": "aarch64"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana13-1-main@src",
"product": {
"name": "grafana13-1-main@src",
"product_id": "grafana13-1-main@src",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana13.1@13.1.3-0.1.3.hum1?arch=src\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-source-rpms"
}
}
}
],
"category": "architecture",
"name": "src"
},
{
"branches": [
{
"category": "product_version",
"name": "grafana13-1-main@x86_64",
"product": {
"name": "grafana13-1-main@x86_64",
"product_id": "grafana13-1-main@x86_64",
"product_identification_helper": {
"purl": "pkg:rpm/redhat/grafana13.1@13.1.3-0.1.3.hum1?arch=x86_64\u0026distro=hummingbird-20251124\u0026repository_id=public-hummingbird-x86_64-rpms"
}
}
}
],
"category": "architecture",
"name": "x86_64"
}
],
"category": "vendor",
"name": "Red Hat"
}
],
"relationships": [
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana13-1-main@aarch64 as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana13-1-main@aarch64"
},
"product_reference": "grafana13-1-main@aarch64",
"relates_to_product_reference": "Red Hat Hardened Images"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana13-1-main@src as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana13-1-main@src"
},
"product_reference": "grafana13-1-main@src",
"relates_to_product_reference": "Red Hat Hardened Images"
},
{
"category": "default_component_of",
"full_product_name": {
"name": "grafana13-1-main@x86_64 as a component of Red Hat Hardened Images",
"product_id": "Red Hat Hardened Images:grafana13-1-main@x86_64"
},
"product_reference": "grafana13-1-main@x86_64",
"relates_to_product_reference": "Red Hat Hardened Images"
}
]
},
"vulnerabilities": [
{
"cve": "CVE-2026-65898",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:36.457690+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506436"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the `ALLOWED_ATTR` allowlist is not properly cloned. This allows an attacker to register a hook that can permanently modify the shared allowlist, enabling the conditional allowance of dangerous attributes. Consequently, an attacker can submit untrusted content that inherits the polluted allowlist, leading to stored Cross-site Scripting (XSS) and the execution of event handlers.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-site scripting via permanent attribute allowlist pollution",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This vulnerability in DOMPurify allows for cross-site scripting due to improper handling of the `ALLOWED_ATTR` allowlist. When the `setConfig()` function is used with an `uponSanitizeAttribute` hook, the allowlist can be permanently mutated, enabling attackers to inject dangerous attributes and execute stored XSS.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65898"
},
{
"category": "external",
"summary": "RHBZ#2506436",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506436"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65898",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65898"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65898",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65898"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cmwh-pvxp-8882",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-cmwh-pvxp-8882"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-permanent-attribute-allowlist-pollution-via-setconfig",
"url": "https://www.vulncheck.com/advisories/dompurify-before-permanent-attribute-allowlist-pollution-via-setconfig"
}
],
"release_date": "2026-07-23T13:16:17.715000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:06:09+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58502"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 5.4,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "LOW",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-site scripting via permanent attribute allowlist pollution"
},
{
"cve": "CVE-2026-65899",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:09.534995+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506428"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify where the clearConfig() function does not properly reset the retained Trusted Types policy. This can lead to a DOMPurify instance, when reused across different security contexts, remaining bound to a previously supplied and potentially unsafe policy. An attacker could leverage this to execute malicious scripts, resulting in client-side arbitrary code execution.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Client-side arbitrary code execution due to improper Trusted Types policy reset",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This flaw in DOMPurify, concerning improper Trusted Types policy reset, could lead to client-side arbitrary code execution. However, Red Hat products are not affected by this vulnerability, as indicated by the delegated resolution for the `ruff` component within Red Hat Hard Hat Images.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65899"
},
{
"category": "external",
"summary": "RHBZ#2506428",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506428"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65899",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65899"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65899",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65899"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/commit/825e617753ac1169306a542d3174a77f717a0cf6",
"url": "https://github.com/cure53/DOMPurify/commit/825e617753ac1169306a542d3174a77f717a0cf6"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-vxr8-fq34-vvx9",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-vxr8-fq34-vvx9"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-trusted-types-policy-state-contamination",
"url": "https://www.vulncheck.com/advisories/dompurify-before-trusted-types-policy-state-contamination"
}
],
"release_date": "2026-07-23T13:16:18.389000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:06:09+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58502"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Client-side arbitrary code execution due to improper Trusted Types policy reset"
},
{
"cve": "CVE-2026-65901",
"cwe": {
"id": "CWE-79",
"name": "Improper Neutralization of Input During Web Page Generation (\u0027Cross-site Scripting\u0027)"
},
"discovery_date": "2026-07-23T14:01:23.186814+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506432"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. This cross-site scripting (XSS) vulnerability exists in IN_PLACE mode, where the software trusts attacker-controlled nodeName on live non-form nodes. A remote attacker can supply hostile live Document Object Model (DOM) objects with script children. These scripts can execute when the sanitized tree is inserted into a live document, potentially leading to information disclosure or arbitrary code execution.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Cross-site scripting vulnerability via attacker-controlled nodeName",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This cross-site scripting (XSS) vulnerability in DOMPurify arises when the library is used with `IN_PLACE: true` on attacker-supplied live DOM nodes. An attacker can manipulate a script child node\u0027s `nodeName` to bypass sanitization, leading to arbitrary script execution when the sanitized tree is inserted into a live document. This impacts Red Hat products that process untrusted live DOM content using DOMPurify in this specific configuration.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65901"
},
{
"category": "external",
"summary": "RHBZ#2506432",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506432"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65901",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65901"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65901",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65901"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-x4vx-rjvf-j5p4",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-x4vx-rjvf-j5p4"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-cross-site-scripting-via-in-place-nodename",
"url": "https://www.vulncheck.com/advisories/dompurify-cross-site-scripting-via-in-place-nodename"
}
],
"release_date": "2026-07-23T13:16:19.721000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:06:09+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58502"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Cross-site scripting vulnerability via attacker-controlled nodeName"
},
{
"cve": "CVE-2026-65902",
"cwe": {
"id": "CWE-915",
"name": "Improperly Controlled Modification of Dynamically-Determined Object Attributes"
},
"discovery_date": "2026-07-23T14:01:18.981314+00:00",
"ids": [
{
"system_name": "Red Hat Bugzilla ID",
"text": "2506431"
}
],
"notes": [
{
"category": "description",
"text": "A flaw was found in DOMPurify. An attacker can exploit a vulnerability in how DOMPurify handles its sanitization hooks when default configurations are used. By manipulating the uponSanitizeElement or uponSanitizeAttribute hooks, an attacker can permanently alter the allowed HTML tags and attributes. This allows malicious content to bypass sanitization, potentially leading to cross-site scripting (XSS) attacks and compromising the integrity of web applications.",
"title": "Vulnerability description"
},
{
"category": "summary",
"text": "dompurify: DOMPurify: Sanitization bypass via hook manipulation",
"title": "Vulnerability summary"
},
{
"category": "other",
"text": "This flaw in DOMPurify allows an attacker to bypass sanitization by manipulating internal hooks, leading to potential cross-site scripting (XSS) vulnerabilities. The issue permanently alters the default allow-lists for the DOMPurify instance when default configurations are used. Red Hat products, including Red Hat Hardened Images, are not affected by this vulnerability.",
"title": "Statement"
},
{
"category": "general",
"text": "The CVSS score(s) listed for this vulnerability do not reflect the associated product\u0027s status, and are included for informational purposes to better understand the severity of this vulnerability.",
"title": "CVSS score applicability"
}
],
"product_status": {
"fixed": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
},
"references": [
{
"category": "self",
"summary": "Canonical URL",
"url": "https://access.redhat.com/security/cve/CVE-2026-65902"
},
{
"category": "external",
"summary": "RHBZ#2506431",
"url": "https://bugzilla.redhat.com/show_bug.cgi?id=2506431"
},
{
"category": "external",
"summary": "https://www.cve.org/CVERecord?id=CVE-2026-65902",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65902"
},
{
"category": "external",
"summary": "https://nvd.nist.gov/vuln/detail/CVE-2026-65902",
"url": "https://nvd.nist.gov/vuln/detail/CVE-2026-65902"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36",
"url": "https://github.com/cure53/DOMPurify/commit/7996f1dc78eb8b7922388aed75d94a9f8fad9a36"
},
{
"category": "external",
"summary": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
},
{
"category": "external",
"summary": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags",
"url": "https://www.vulncheck.com/advisories/dompurify-before-hook-mutation-pollution-via-allowedtags"
}
],
"release_date": "2026-07-23T13:16:20.528000+00:00",
"remediations": [
{
"category": "vendor_fix",
"date": "2026-08-22T14:06:09+00:00",
"details": "For details on how to apply this update, which includes the changes described in this advisory, refer to:\nhttps://images.redhat.com/",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
],
"restart_required": {
"category": "none"
},
"url": "https://access.redhat.com/errata/RHSA-2026:58502"
},
{
"category": "workaround",
"details": "Mitigation for this issue is either not available or the currently available options do not meet the Red Hat Product Security criteria comprising ease of use and deployment, applicability to widespread installation base, or stability.",
"product_ids": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"scores": [
{
"cvss_v3": {
"attackComplexity": "LOW",
"attackVector": "NETWORK",
"availabilityImpact": "NONE",
"baseScore": 6.1,
"baseSeverity": "MEDIUM",
"confidentialityImpact": "LOW",
"integrityImpact": "LOW",
"privilegesRequired": "NONE",
"scope": "CHANGED",
"userInteraction": "REQUIRED",
"vectorString": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"version": "3.1"
},
"products": [
"Red Hat Hardened Images:grafana13-1-main@aarch64",
"Red Hat Hardened Images:grafana13-1-main@src",
"Red Hat Hardened Images:grafana13-1-main@x86_64"
]
}
],
"threats": [
{
"category": "impact",
"details": "Moderate"
}
],
"title": "dompurify: DOMPurify: Sanitization bypass via hook manipulation"
}
]
}
ubuntu-cve-2026-65902
Vulnerability from osv_ubuntu
DOMPurify before 3.4.7 (affected versions <= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.
{
"affected": [
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-dompurify",
"binary_version": "2.3.3+dfsg-1"
}
]
},
"package": {
"ecosystem": "Ubuntu:22.04:LTS",
"name": "node-dompurify",
"purl": "pkg:deb/ubuntu/node-dompurify@2.3.3+dfsg-1?arch=source\u0026distro=jammy"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"2.3.0+dfsg-2",
"2.3.3+dfsg-1"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-dompurify",
"binary_version": "3.0.9+dfsg+~3.0.5-1"
}
]
},
"package": {
"ecosystem": "Ubuntu:24.04:LTS",
"name": "node-dompurify",
"purl": "pkg:deb/ubuntu/node-dompurify@3.0.9+dfsg+~3.0.5-1?arch=source\u0026distro=noble"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"2.4.1+dfsg+~2.4.0-1",
"3.0.9+dfsg+~3.0.5-1"
]
},
{
"ecosystem_specific": {
"binaries": [
{
"binary_name": "node-dompurify",
"binary_version": "3.3.3+dfsg-1"
}
]
},
"package": {
"ecosystem": "Ubuntu:26.04:LTS",
"name": "node-dompurify",
"purl": "pkg:deb/ubuntu/node-dompurify@3.3.3+dfsg-1?arch=source\u0026distro=resolute"
},
"ranges": [
{
"events": [
{
"introduced": "0"
}
],
"type": "ECOSYSTEM"
}
],
"versions": [
"3.1.7+dfsg+~3.0.5-2",
"3.3.3+dfsg-1"
]
}
],
"aliases": [],
"details": "DOMPurify before 3.4.7 (affected versions \u003c= 3.4.5) passes direct references to the module-level DEFAULT_ALLOWED_TAGS and DEFAULT_ALLOWED_ATTR sets to the uponSanitizeElement and uponSanitizeAttribute hooks via data.allowedTags / data.allowedAttributes when sanitize is called without an explicit cfg.ALLOWED_TAGS / cfg.ALLOWED_ATTR array. A hook that mutates these fields permanently widens the default allow-lists for the lifetime of the DOMPurify instance, so all subsequent default-config sanitize calls inherit the widened defaults and attacker payloads using the poisoned tag/attribute name survive sanitization. removeAllHooks(), clearConfig(), and passing a fresh cfg do not recover the state; only constructing a new DOMPurify instance does.",
"id": "UBUNTU-CVE-2026-65902",
"modified": "2026-07-29T08:01:44Z",
"published": "2026-07-23T14:18:00Z",
"references": [
{
"type": "REPORT",
"url": "https://ubuntu.com/security/CVE-2026-65902"
},
{
"type": "REPORT",
"url": "https://www.cve.org/CVERecord?id=CVE-2026-65902"
},
{
"type": "REPORT",
"url": "https://github.com/cure53/DOMPurify/security/advisories/GHSA-76mc-f452-cxcm"
}
],
"related": [],
"schema_version": "1.7.0",
"severity": [
{
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N",
"type": "CVSS_V3"
},
{
"score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N",
"type": "CVSS_V4"
},
{
"score": "medium",
"type": "Ubuntu"
}
],
"upstream": [
"CVE-2026-65902"
]
}
Sightings
| Author | Source | Type | Date | Other |
|---|
Nomenclature
- Seen: The vulnerability was mentioned, discussed, or observed by the user.
- Confirmed: The vulnerability has been validated from an analyst's perspective.
- Published Proof of Concept: A public proof of concept is available for this vulnerability.
- Exploited: The vulnerability was observed as exploited by the user who reported the sighting.
- Patched: The vulnerability was observed as successfully patched by the user who reported the sighting.
- Not exploited: The vulnerability was not observed as exploited by the user who reported the sighting.
- Not confirmed: The user expressed doubt about the validity of the vulnerability.
- Not patched: The vulnerability was not observed as successfully patched by the user who reported the sighting.
The approach is described in our paper Mapping CVEs to MITRE ATT&CK Techniques: A Curated Gold-Set Classifier and the Limits of LLM-Assisted Label Expansion.