Skip to content
Heist/ feed
Back to feed
Medium

Mermaid XY Charts are vulnerable to an infinite loop DoS

Type: advisorySources: OSV

Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams and charts. 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.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-71436
Confirmed fixed CVEs
Not specified
Updated in this feed
2 Nov 2026, 18:25 UTC · Revision 1

Source evidence

Mermaid XY Charts are vulnerable to an infinite loop DoS

core-osv · Original source

Published 6 Aug 2026, 19:49 UTC

Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams and charts. 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.

osv:CVE-2026-71436
Complete source record
{
  "id": "016cdca17007f7e819ea8054c9f433b527e0e716aff82c4524dc9220e0ebd74a",
  "url": "https://osv.dev/vulnerability/CVE-2026-71436",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "Mermaid XY Charts are vulnerable to an infinite loop DoS",
    "summary": "Mermaid is a JavaScript tool that uses Markdown-inspired text to create and modify diagrams and charts. 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.",
    "evidence": "osv:CVE-2026-71436",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-71436",
      "aliases": [
        "CVE-2026-71436",
        "GHSA-2v8p-3f2j-5mp7"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:L/SC:N/SI:N/SA:L"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/mermaid-js/mermaid",
              "type": "GIT",
              "events": [
                {
                  "introduced": "29942c04dc92a64f8c618d6d55f9b57800341cf5"
                },
                {
                  "fixed": "49c1a1c7d1faa995b07cc7224543bd0d9a7a9e70"
                },
                {
                  "introduced": "0"
                },
                {
                  "fixed": "7ecca0cd7f1658ef74f4e7e91f925724ef403bbf"
                },
                {
                  "fixed": "630aa7e5dd417e1f56bff2a1ce8df2c5ad08d289"
                },
                {
                  "fixed": "ef60adc837d9d5107af21285f01e83dea309bd0a"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "10.6.0"
                      },
                      {
                        "fixed": "10.9.8"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "introduced": "11.0.0-alpha.1"
                      },
                      {
                        "fixed": "11.16.1"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StringRangeExpression"
                  },
                  {
                    "range": [
                      {
                        "fixed": "630aa7e5dd417e1f56bff2a1ce8df2c5ad08d289"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "ef60adc837d9d5107af21285f01e83dea309bd0a"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  },
                  {
                    "range": [
                      {
                        "fixed": "7ecca0cd7f1658ef74f4e7e91f925724ef403bbf"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "mermaid@11.16.1"
                  },
                  {
                    "range": [
                      {
                        "fixed": "49c1a1c7d1faa995b07cc7224543bd0d9a7a9e70"
                      }
                    ],
                    "source": "REFERENCES_TAG",
                    "original_tag": "v10.9.8"
                  }
                ]
              }
            }
          ],
          "versions": [
            "mermaid@11.16.0",
            "@mermaid-js/tiny@11.16.0",
            "@mermaid-js/parser@1.2.0",
            "@mermaid-js/layout-elk@0.2.2",
            "@mermaid-js/examples@1.3.0",
            "v10.9.6",
            "mermaid@11.15.0",
            "@mermaid-js/mermaid-zenuml@0.2.3",
            "@mermaid-js/parser@1.1.1",
            "@mermaid-js/layout-tidy-tree@0.2.2",
            "mermaid@11.14.0",
            "@mermaid-js/tiny@11.14.0",
            "@mermaid-js/parser@1.1.0",
            "@mermaid-js/examples@1.2.0",
            "v10.9.5",
            "mermaid@11.13.0",
            "@mermaid-js/tiny@11.13.0",
            "@mermaid-js/parser@1.0.1",
            "@mermaid-js/layout-elk@0.2.1",
            "@mermaid-js/examples@1.1.0",
            "mermaid@11.12.3",
            "@mermaid-js/tiny@11.12.3",
            "@mermaid-js/parser@1.0.0",
            "@mermaid-js/layout-tidy-tree@0.2.1",
            "mermaid@11.12.2",
            "mermaid@11.12.1",
            "@mermaid-js/tiny@11.12.1",
            "v10.9.4",
            "@mermaid-js/parser@0.6.3",
            "mermaid@11.12.0",
            "@mermaid-js/tiny@11.12.0",
            "mermaid@11.11.0",
            "@mermaid-js/tiny@11.11.0",
            "@mermaid-js/layout-tidy-tree@0.2.0",
            "@mermaid-js/layout-elk@0.2.0",
            "mermaid@11.10.1",
            "@mermaid-js/tiny@11.10.1",
            "mermaid@11.10.0",
            "@mermaid-js/tiny@11.10.0",
            "@mermaid-js/mermaid-zenuml@0.2.2",
            "@mermaid-js/layout-elk@0.1.9",
            "v10.9.3",
            "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",
            "v10.9.1",
            "v10.9.2",
            "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-2026-71436.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:22.067040746Z",
      "provider": "osv",
      "references": [
        "https://github.com/mermaid-js/mermaid/releases/tag/mermaid@11.16.1",
        "https://github.com/mermaid-js/mermaid/releases/tag/v10.9.8",
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71436.json",
        "https://github.com/mermaid-js/mermaid/security/advisories/GHSA-2v8p-3f2j-5mp7",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-71436",
        "https://github.com/mermaid-js/mermaid/commit/630aa7e5dd417e1f56bff2a1ce8df2c5ad08d289",
        "https://github.com/mermaid-js/mermaid/commit/ef60adc837d9d5107af21285f01e83dea309bd0a",
        "https://github.com/mermaid-js/mermaid/pull/8022"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-1325",
          "CWE-835"
        ],
        "cna_assigner": "GitHub_M",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/71xxx/CVE-2026-71436.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-71436",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 488361,
  "published_at": "2026-08-06T19:49:44.739+00:00"
}