Mermaid XY Charts are vulnerable to an infinite loop DoS
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 sourcePublished 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"
}