Skip to content
Heist/ feed
Back to feed
Medium

Mermaid improperly sanitizes of sequence diagram labels leading to XSS

Type: advisorySources: OSV

Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. In the default configuration of mermaid 10.9.0-rc.1 to 11.9.0, user supplied input for sequence diagram labels is passed to innerHTML during calculation of element size, causing XSS.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2025-54881
Confirmed fixed CVEs
Not specified
Updated in this feed
5 Nov 2026, 05:56 UTC · Revision 1

Source evidence

Mermaid improperly sanitizes of sequence diagram labels leading to XSS

core-osv · Original source

Published 19 Aug 2025, 17:04 UTC

Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. In the default configuration of mermaid 10.9.0-rc.1 to 11.9.0, user supplied input for sequence diagram labels is passed to innerHTML during calculation of element size, causing XSS.

osv:CVE-2025-54881
Complete source record
{
  "id": "32f6f25d89e25295d02bc3949f714a1f4e79f33c367ead39b286efc40d9030cd",
  "url": "https://osv.dev/vulnerability/CVE-2025-54881",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Mermaid improperly sanitizes of sequence diagram labels leading to XSS",
    "summary": "Mermaid is a JavaScript based diagramming and charting tool that uses Markdown-inspired text definitions and a renderer to create and modify complex diagrams. In the default configuration of mermaid 10.9.0-rc.1 to 11.9.0, user supplied input for sequence diagram labels is passed to innerHTML during calculation of element size, causing XSS.",
    "evidence": "osv:CVE-2025-54881",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2025-54881",
      "aliases": [
        "CVE-2025-54881",
        "GHSA-7rqq-prvp-x9jh"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/mermaid-js/mermaid",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "5c69e5fdb004a6d0a2abe97e23d26e223a059832"
                },
                {
                  "fixed": "685516a85ec1df64cefd4fd15f26533be87d458e"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "10.9.0-rc.1"
                      },
                      {
                        "last_affected": "11.9.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "5c69e5fdb004a6d0a2abe97e23d26e223a059832"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "685516a85ec1df64cefd4fd15f26533be87d458e"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "mermaid@11.8.1",
            "@mermaid-js/tiny@11.8.1",
            "@mermaid-js/parser@0.6.1",
            "mermaid@11.8.0",
            "@mermaid-js/tiny@11.8.0",
            "@mermaid-js/parser@0.6.0",
            "mermaid@11.7.0",
            "@mermaid-js/tiny@11.7.0",
            "@mermaid-js/parser@0.5.0",
            "@mermaid-js/mermaid-zenuml@0.2.1",
            "@mermaid-js/layout-elk@0.1.8",
            "mermaid@11.6.0",
            "@mermaid-js/parser@0.4.0",
            "mermaid@11.5.0",
            "@mermaid-js/layout-elk@0.1.7",
            "mermaid@11.4.1",
            "@mermaid-js/layout-elk@0.1.6",
            "mermaid@11.4.0",
            "mermaid@11.3.0",
            "@mermaid-js/layout-elk@0.1.5",
            "mermaid@11.2.1",
            "@mermaid-js/layout-elk@0.1.4",
            "mermaid@11.2.0",
            "mermaid@11.1.1",
            "mermaid@11.1.0",
            "@mermaid-js/parser@0.3.0",
            "@mermaid-js/layout-elk@0.1.3",
            "@mermaid-js/layout-elk@0.1.2",
            "mermaid@11.0.2",
            "@mermaid-js/parser@0.2.0",
            "@mermaid-js/layout-elk@0.1.1",
            "mermaid@11.0.1",
            "v11.0.0",
            "v10.9.0",
            "v10.7.0",
            "v10.4.0",
            "v10.3.0",
            "v10.1.0",
            "9.1.5",
            "9.1.3",
            "9.1.2",
            "8.13.11",
            "8.13.10",
            "8.13.7",
            "8.13.6",
            "8.13.5",
            "8.12.1",
            "8.11.4",
            "8.11.3",
            "8.11.0-rc2",
            "8.9.3",
            "8.9.1",
            "8.8.3",
            "8.8.0",
            "8.7.0",
            "8.6.2",
            "8.6.0",
            "8.5.2",
            "untagged-566ebfbf21141b604025",
            "8.5.1",
            "untagged-31c93788afe260d914bb",
            "8.4.8",
            "untagged-7651dabb407ecd5631ce",
            "8.4.6",
            "untagged-f43366252632a1a42020",
            "8.4.4",
            "8.2.0",
            "8.3.0",
            "8.2.6",
            "8.2.5",
            "8.2.4",
            "8.2.3",
            "8.2.2",
            "8.1.0",
            "8.2.1",
            "7.0.5",
            "7.0.3",
            "7.0.2",
            "7.0.0",
            "6.0.0",
            "0.5.7",
            "0.5.6",
            "0.5.5",
            "0.5.4",
            "0.5.3",
            "0.5.2",
            "0.5.1",
            "0.5.0",
            "0.4.0",
            "0.3.5",
            "0.3.4",
            "0.3.3",
            "0.3.2",
            "0.3.1",
            "0.3.0",
            "0.2.16",
            "0.2.15",
            "0.2.14",
            "0.2.13",
            "0.2.8",
            "0.2.7",
            "0.2.6",
            "0.2.5",
            "0.2.4",
            "0.2.3",
            "0.2.2",
            "0.2.1",
            "0.2.0",
            "0.1.1",
            "0.1.0"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2025-54881.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:43.025831849Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54881.json",
        "https://github.com/mermaid-js/mermaid/security/advisories/GHSA-7rqq-prvp-x9jh",
        "https://nvd.nist.gov/vuln/detail/CVE-2025-54881",
        "https://github.com/mermaid-js/mermaid/commit/5c69e5fdb004a6d0a2abe97e23d26e223a059832",
        "https://github.com/mermaid-js/mermaid/commit/685516a85ec1df64cefd4fd15f26533be87d458e"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2025/54xxx/CVE-2025-54881.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2025-54881",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 510870,
  "published_at": "2025-08-19T17:04:29.453+00:00"
}