Skip to content
Heist/ feed
Back to feed
Medium

showdown - Stored XSS via Unescaped Table Header ID Attribute Injection

Type: advisorySources: OSV

showdown contains a stored cross-site scripting vulnerability in the parseHeaders function of src/subParsers/makehtml/tables.js that fails to properly escape table header ID attributes. Attackers can inject arbitrary HTML and script-executing SVG elements through double-quote characters in markdown table headers, achieving stored XSS when untrusted markdown is rendered with the default github flavor configuration.

Products
Not specified
Affected versions
Not specified
Fixed versions
Not specified
CVEs
CVE-2026-59710
Confirmed fixed CVEs
Not specified
Updated in this feed
4 Nov 2026, 03:30 UTC · Revision 1

Source evidence

showdown - Stored XSS via Unescaped Table Header ID Attribute Injection

core-osv · Original source

Published 6 Jul 2026, 21:15 UTC

showdown contains a stored cross-site scripting vulnerability in the parseHeaders function of src/subParsers/makehtml/tables.js that fails to properly escape table header ID attributes. Attackers can inject arbitrary HTML and script-executing SVG elements through double-quote characters in markdown table headers, achieving stored XSS when untrusted markdown is rendered with the default github flavor configuration.

osv:CVE-2026-59710
Complete source record
{
  "id": "e3a2631f95cebeba453345858440e14d170bb5175f26c1681ce84868788e6924",
  "url": "https://osv.dev/vulnerability/CVE-2026-59710",
  "method": "structured",
  "payload": {
    "kind": "advisory",
    "title": "showdown - Stored XSS via Unescaped Table Header ID Attribute Injection",
    "summary": "showdown contains a stored cross-site scripting vulnerability in the parseHeaders function of src/subParsers/makehtml/tables.js that fails to properly escape table header ID attributes. Attackers can inject arbitrary HTML and script-executing SVG elements through double-quote characters in markdown table headers, achieving stored XSS when untrusted markdown is rendered with the default github flavor configuration.",
    "evidence": "osv:CVE-2026-59710",
    "products": [],
    "severity": "medium",
    "structured": {
      "id": "CVE-2026-59710",
      "aliases": [
        "CVE-2026-59710",
        "GHSA-22g5-r2x5-97cx"
      ],
      "metrics": [
        {
          "type": "CVSS_V4",
          "score": "CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:L/VI:L/VA:N/SC:L/SI:L/SA:N"
        }
      ],
      "affected": [
        {
          "ranges": [
            {
              "repo": "https://github.com/showdownjs/showdown",
              "type": "GIT",
              "events": [
                {
                  "introduced": "0"
                },
                {
                  "fixed": "e5cab1e9a5dcea2bb3cbf888863fa7e65ab37edf"
                }
              ],
              "database_specific": {
                "extracted_events": [
                  {
                    "range": [
                      {
                        "introduced": "0"
                      },
                      {
                        "last_affected": "2.1.0"
                      }
                    ],
                    "source": "AFFECTED_FIELD",
                    "strategy": "StandardRange"
                  },
                  {
                    "range": [
                      {
                        "fixed": "e5cab1e9a5dcea2bb3cbf888863fa7e65ab37edf"
                      }
                    ],
                    "source": "REFERENCES_COMMIT"
                  }
                ]
              }
            }
          ],
          "versions": [
            "3.0.0-rc2",
            "3.0.0-rc1",
            "1.8.5",
            "1.8.4",
            "1.8.3",
            "1.8.2",
            "1.8.1",
            "1.8.0",
            "1.7.6",
            "1.7.5",
            "1.7.4",
            "1.7.3",
            "1.7.2",
            "1.7.1",
            "1.7.0",
            "1.6.4",
            "1.6.3",
            "1.6.2",
            "1.6.1",
            "1.6.0",
            "1.5.5",
            "1.5.4",
            "1.5.3",
            "1.5.2",
            "1.5.1",
            "1.5.0",
            "1.4.4",
            "1.4.3",
            "1.4.2",
            "1.4.0",
            "1.3.0",
            "1.2.2",
            "1.2.1",
            "1.2.0",
            "1.1.0",
            "1.0.2",
            "1.0.1",
            "1.0.0",
            "0.5.1",
            "1.0.0-alpha.2",
            "1.0.0-alpha1",
            "0.5.0",
            "0.4.0",
            "v0.3.1"
          ],
          "database_specific": {
            "source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-59710.json"
          }
        }
      ],
      "modified": "2026-10-28T02:30:32.850162540Z",
      "provider": "osv",
      "references": [
        "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59710.json",
        "https://nvd.nist.gov/vuln/detail/CVE-2026-59710",
        "https://www.vulncheck.com/advisories/showdown-stored-xss-via-unescaped-table-header-id-attribute-injection",
        "https://github.com/showdownjs/showdown/issues/1046",
        "https://github.com/showdownjs/showdown/commit/e5cab1e9a5dcea2bb3cbf888863fa7e65ab37edf",
        "https://github.com/showdownjs/showdown"
      ],
      "provider_metadata": {
        "cwe_ids": [
          "CWE-79"
        ],
        "cna_assigner": "VulnCheck",
        "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/59xxx/CVE-2026-59710.json"
      }
    },
    "related_cves": [
      {
        "value": "CVE-2026-59710",
        "evidence": "/id"
      }
    ],
    "security_relevant": true,
    "severity_evidence": "/severity/0/score"
  },
  "source_id": "core-osv",
  "document_id": 500031,
  "published_at": "2026-07-06T21:15:45.9+00:00"
}