Severity by source
AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N
AC:H and UI:R because the app must render attacker-controlled attributions and a victim must load the map; client-side XSS gives S:C but only C:L/I:L, not the vendor's C:H/I:H.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
5Blast Radius
ecosystem impact- 11 npm packages depend on maplibre-gl (1 direct, 10 indirect)
Ecosystem-wide dependent count for version 6.4.1.
DescriptionCVE.org
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.
AnalysisAI
Cross-site scripting in MapLibre GL JS before 6.4.1 lets an attacker who controls map style attribution strings or user-supplied custom attributions bypass the library's HTML sanitizer and run arbitrary JavaScript in the victim's browser. The flaw is a sanitizer bug in DOM.sanitize(): iterating the live attributes collection while deleting attributes shifts indexes, so a dangerous event handler placed immediately after another removed attribute (e.g. …
Unlock full vulnerability intelligence
- Risk assessment & exploitation conditions
- Attack chain visualization
- Remediation with exact patch versions
- Threat intelligence from 22 sources
- Personal watchlist & email alerts
Free forever · No credit card required
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata
Vulnerability AssessmentAI
| Exploitation | Requires that the deploying application feeds attacker-controllable text into MapLibre's attribution control - specifically untrusted third-party style attribution strings or user-supplied custom attributions rendered by the attribution control (which writes to innerHTML). … Additional conditions and limiting factors are described in the full assessment. |
| Risk Assessment | The vendor CVSS of 10.0 (AV:N/AC:L/PR:N/UI:N/S:C/C:H/I:H/A:N) substantially overstates real-world risk for a sanitizer-bypass XSS. … Full risk analysis with EPSS, KEV, and SSVC signal comparison available after sign-in. |
| Exploit Scenario | Full exploit scenario with step-by-step reproduction available after sign-in. |
| Remediation | Vendor-released patch: 6.4.1 - upgrade the maplibre-gl dependency to 6.4.1 or later (npm install maplibre-gl@^6.4.1) and rebuild/redeploy any bundles that embed it. … Detailed patch versions, workarounds, and compensating controls in full report. |
Recommended ActionAI
Within 24 hours, identify all applications using MapLibre GL JS and audit which accept user-controlled attribution data; implement immediate input validation or disable user-supplied attribution inputs. …
Sign in for detailed remediation steps and compensating controls.
Threat intelligence, references, and detailed analysis are available after sign-in.
Same weakness CWE-79 – Cross-site Scripting (XSS)
View allShare
External POC / Exploit Code
Leaving vuln.today
EUVD-2026-70734
GHSA-jrc7-96c5-q579