CVE-2026-41148
MediumCVSS 5.3Exploitation Probability (EPSS)
Low risk26th percentile - higher than 26% of all known CVEs
Summary
CSS injection vulnerability in Mermaid up to version 10.9.5 and 11.0.0-alpha.1 through 11.12.0. Improper sanitization in the createCssStyles parser allows CSS injection, leading to page defacement, user tracking, or DOM attribute exfiltration.
Risk Assessment
An attacker can alter page appearance, track users via url() callbacks, or exfiltrate DOM attributes, compromising privacy and integrity.
Recommendation
Update Mermaid to version 10.9.6 or 11.15.0. If unable to upgrade, set securityLevel to "sandbox".
Other vulnerabilities in Mermaid
See all- CVE-2026-71439Medium
Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams. From version 11.6.0 until 11.16.1, Mermaid Radar Diagrams allow arbitrary large values for the ticks parameter, which can cause high CPU usage and freeze the rendering webpage or JavaScript process for long periods of time, potentially until the process is killed from memory exhaustion. This issue is fixed in version 11.16.1.
- CVE-2026-71438Low
Mermaid before 10.9.8 and 11.16.1 is vulnerable to prototype pollution via configuration setters when untrusted data is passed. Diagram-supplied config is not affected.
- CVE-2026-71437Medium
Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams. From version 11.5.0 until 11.16.1, Mermaid Architecture Diagrams are vulnerable to prototype pollution when a diagram defines a group with an id of __proto__. Because the group id is used directly as an object property key without validation, an attacker who can supply diagram text can pollute Object.prototype, potentially affecting the behavior of the embedding application. This issue is fixed in version 11.16.1.
- CVE-2026-71436Medium
Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams. From version 10.6.0 until 10.9.8 and 11.16.1, Mermaid XY Charts are vulnerable to an infinite loop denial of service in the setXAxisRangeData function when configuring an X-Axis with invalid parameters. Because each loop iteration appends an element to an array, this generally causes a RangeError to appear after a few seconds, but it may instead cause the page or JavaScript process to crash from memory exhaustion, depending on the environment. This issue is fixed in versions 10.9.8 and 11.16.1.
- CVE-2026-50159Medium
Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams and charts. Prior to 10.9.8 and 11.16.1, Mermaid is vulnerable to CSS injection via sibling combinator selectors generated from diagram-supplied class or id names. An attacker who can supply diagram text can inject arbitrary CSS into the rendered page, potentially altering the appearance or behavior of unrelated page elements. This issue is fixed in versions 10.9.8 and 11.16.1.
- CVE-2026-41159Medium
Mermaid, a JavaScript diagramming tool, has a CSS injection vulnerability in its default configuration prior to versions 10.9.6 and 11.15.0. The fontFamily, themeCSS, and altFontFamily options allow injecting CSS that escapes the #mermaid-xxx scoping, enabling page defacement and DOM attribute exfiltration via :has() selectors.
- CVE-2026-41150Medium
Mermaid before versions 10.9.6 and 11.15.0 is vulnerable to a denial-of-service attack when rendering Gantt charts if the excludes attribute is used to exclude all dates.
- CVE-2026-41149Medium
In Mermaid up to version 10.9.5 and from 11.0.0-alpha.1 to 11.14.0, there is an HTML injection vulnerability under default configuration. The classDef directive in state diagrams permits DOM injection outside the SVG context, though <script> tags are stripped, preventing XSS.
Original NVD description (English source)
Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams and charts. Versions 10.9.5 and prior, in addition to 11.0.0-alpha.1 through 11.12.0 are vulnerable to CSS injection through improper sanitization. The state diagram (and any other diagram type that routes user-controlled style strings through the createCssStyles parser) captures classDef values using an unrestricted regex that matches everything up to a newline. That value then flows unsanitized through addStyleClass() into createCssStyles() and is assigned to style.innerHTML, so a closing brace (}) in the value terminates the generated CSS selector and turns everything after it into a new CSS rule on the page. This enables page defacement, user tracking via url() callbacks, and DOM attribute exfiltration. This issue has been fixed in versions 10.9.6 and 11.15.0. If developers are unable to immediately upgrade, they can work around this issue by setting "securityLevel": "sandbox", which prevents the issue by rendering the mermaid diagram in a sandboxed <iframe>.

