{"id":"CVE-2026-85061","state":"PUBLISHED","title":"MapLibre GL JS: XSS Sanitizer Bypass in DOM.sanitize() via Live NamedNodeMap Removal Skip","description":"MapLibre GL JS is an interactive vector tile map library for web browsers. Prior to 6.4.1, DOM.sanitize() in src/util/dom.ts iterates elem.attributes as a live NamedNodeMap while removeAttributes() removes attributes from the same collection, shifting indexes and skipping an adjacent dangerous attribute. An attacker who controls untrusted third-party style attribution strings or user-supplied custom attributions can supply consecutive dangerous attributes, causing an attribute such as onload or ontoggle to survive sanitization and execute when the attribution control inserts the content into innerHTML. A victim must render the affected map content for the script to execute. This issue is fixed in version 6.4.1.","publishedAt":"2026-09-03T20:18:50.854Z","updatedAt":"2026-09-04T18:37:12.250Z","severity":{"score":10,"label":"Critical","version":"3.1","vector":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","source":"GitHub_M"},"assigner":"GitHub_M","products":["maplibre maplibre-gl-js"],"affected":[{"vendor":"maplibre","product":"maplibre-gl-js","versions":[{"version":"< 6.4.1","status":"affected"}]}],"references":["https://github.com/maplibre/maplibre-gl-js/security/advisories/GHSA-jrc7-96c5-q579","https://github.com/maplibre/maplibre-gl-js/pull/8189","https://github.com/maplibre/maplibre-gl-js/commit/1da69f3cd913a39fa948708e01478663bf48bc27","https://github.com/maplibre/maplibre-gl-js/releases/tag/v6.4.1"],"weaknesses":["CWE-79"],"ingestedAt":"2026-10-29T20:13:15.269Z","source":{"repository":"CVEProject/cvelistV5","path":"cves/2026/85xxx/CVE-2026-85061.json","commit":"556c9d3a8cd17e218bb8e452ba7cd619a384ff47"},"raw":{"dataType":"CVE_RECORD","dataVersion":"5.2","cveMetadata":{"cveId":"CVE-2026-85061","state":"PUBLISHED","datePublished":"2026-09-03T20:18:50.854Z","dateUpdated":"2026-09-04T18:37:12.250Z","assignerShortName":"GitHub_M","assignerOrgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateReserved":"2026-09-02T21:21:01.774Z"},"containers":{"cna":{"title":"MapLibre GL JS: XSS Sanitizer Bypass in DOM.sanitize() via Live NamedNodeMap Removal Skip","descriptions":[{"lang":"en","value":"MapLibre GL JS is an interactive vector tile map library for web browsers. Prior to 6.4.1, DOM.sanitize() in src/util/dom.ts iterates elem.attributes as a live NamedNodeMap while removeAttributes() removes attributes from the same collection, shifting indexes and skipping an adjacent dangerous attribute. An attacker who controls untrusted third-party style attribution strings or user-supplied custom attributions can supply consecutive dangerous attributes, causing an attribute such as onload or ontoggle to survive sanitization and execute when the attribution control inserts the content into innerHTML. A victim must render the affected map content for the script to execute. This issue is fixed in version 6.4.1."}],"affected":[{"vendor":"maplibre","product":"maplibre-gl-js","versions":[{"version":"< 6.4.1","status":"affected"}]}],"references":[{"url":"https://github.com/maplibre/maplibre-gl-js/security/advisories/GHSA-jrc7-96c5-q579","name":"https://github.com/maplibre/maplibre-gl-js/security/advisories/GHSA-jrc7-96c5-q579","tags":["x_refsource_CONFIRM"]},{"url":"https://github.com/maplibre/maplibre-gl-js/pull/8189","name":"https://github.com/maplibre/maplibre-gl-js/pull/8189","tags":["x_refsource_MISC"]},{"url":"https://github.com/maplibre/maplibre-gl-js/commit/1da69f3cd913a39fa948708e01478663bf48bc27","name":"https://github.com/maplibre/maplibre-gl-js/commit/1da69f3cd913a39fa948708e01478663bf48bc27","tags":["x_refsource_MISC"]},{"url":"https://github.com/maplibre/maplibre-gl-js/releases/tag/v6.4.1","name":"https://github.com/maplibre/maplibre-gl-js/releases/tag/v6.4.1","tags":["x_refsource_MISC"]}],"metrics":[{"cvssV3_1":{"attackComplexity":"LOW","attackVector":"NETWORK","availabilityImpact":"NONE","baseScore":10,"baseSeverity":"CRITICAL","confidentialityImpact":"HIGH","integrityImpact":"HIGH","privilegesRequired":"NONE","scope":"CHANGED","userInteraction":"NONE","vectorString":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N","version":"3.1"}}],"problemTypes":[{"descriptions":[{"cweId":"CWE-79","lang":"en","description":"CWE-79: Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')","type":"CWE"}]}],"providerMetadata":{"shortName":"GitHub_M","orgId":"a0819718-46f1-4df5-94e2-005712e83aaa","dateUpdated":"2026-09-03T20:18:50.854Z"},"source":{"advisory":"GHSA-jrc7-96c5-q579","discovery":"UNKNOWN"}},"adp":[{"title":"CISA ADP Vulnrichment","metrics":[{"other":{"type":"ssvc","content":{"timestamp":"2026-09-04T18:36:59.472100Z","id":"CVE-2026-85061","options":[{"Exploitation":"none"},{"Automatable":"yes"},{"Technical Impact":"total"}],"role":"CISA Coordinator","version":"2.0.3"}}}],"providerMetadata":{"shortName":"CISA-ADP","orgId":"134c704f-9b21-4f2e-91b3-4a467353bcc0","dateUpdated":"2026-09-04T18:37:12.250Z"}}]}}}