{"items":[{"id":"NVI-00018389","kind":"vulnerability","title":"Mistune Math Plugin has an XSS Escape Bypass","revision":1,"unknowns":["Customer inventory, deployment, reachability and exploitation have not been inspected."],"lifecycle":"active","identifiers":["GHSA-8g87-j6q8-g93x","CVE-2026-44708"],"plain_summary":"GitHub lists this reviewed advisory for mistune. Published version ranges and source prerequisites are shown below; this is not an inspection of a visitor’s application.","review_status":"source_listed","control_topics":[],"public_actions":[{"summary":"Identify the exact component and deployed version, examine the linked publisher’s conditions, and retain evidence of any mitigation.","source_ids":["sr-1b4b2fd209d09e31c7d3f694b56efc0d"],"action_type":"investigate","limitations":"Confirm current vendor support, compatibility and deployment evidence. This report has not tested a fix in your system.","current_supported_target":null}],"schema_version":"1.1.0","source_metrics":[{"kind":"CVSS","as_of":"2026-06-08T23:30:21.000Z","value":"6.1 medium","meaning":"GitHub source severity; exploitability and local consequence require separate evidence.","source_id":"sr-1b4b2fd209d09e31c7d3f694b56efc0d"}],"why_it_matters":"Published affected context helps an owner decide what evidence to gather. This report has not examined your application.","related_sources":[{"id":"sr-1b4b2fd209d09e31c7d3f694b56efc0d","url":"https://github.com/advisories/GHSA-8g87-j6q8-g93x","basis":"vendor_advisory","notes":"GitHub Advisory Database; CC-BY-4.0. Each advisory links its original attribution. Null normalizes fields.","title":"GHSA-8g87-j6q8-g93x","publisher":"GitHub Advisory Database","observed_at":"2026-11-07T00:50:36.189Z"}],"affected_context":[{"certainty":"source_listed","source_ids":["sr-1b4b2fd209d09e31c7d3f694b56efc0d"],"technology":"mistune","known_exclusions":[],"conditions_summary":"## Summary\nThe mistune math plugin renders inline math (`$...$`) and block math (`$$...$$`) by concatenating the raw user-supplied content directly into the HTML output **without any HTML escaping**. This occurs even when the parser is explicitly created with `escape=True`, which is supposed to guarantee that all user-controlled text is sanitised before reaching the DOM.\n\nThe result is a silent contract violation: a developer who enables `escape=True` reasonably expects complete XSS protection, but the math plugin operates as an independent render path that ignores the renderer's `_escape` flag entirely.\n\n## Details\n**File:** `src/mistune/plugins/math.py`\n\n```python\ndef render_inline_math(renderer, text):\n    # `text` is raw user input — no escape() call anywhere\n    return r'\\(' + text + r\"\\)\"\n\ndef render_block_math(renderer, text):\n    # same issue for block-level $$...$$\n    return '$$\\n' + text + \"\\n$$\\n\"\n```\n\nBoth functions take `text` directly from the parsed token and concatenate it into the output string. Neither function:\n- calls `escape(text)` from `mistune.util`\n- checks `renderer._escape`\n- calls `safe_entity(text)` or a","public_affected_ranges":["<= 3.2.0"]}],"null_published_at":"2026-11-07T07:07:39.830Z","source_updated_at":"2026-06-08T23:30:21.000Z","source_disclosed_at":"2026-05-08T23:40:04.000Z","is_synthetic_fixture":false,"null_last_reviewed_at":null,"public_change_summary":"First indexed by Null; source disclosure date is shown separately.","null_first_observed_at":"2026-11-07T00:50:36.189Z"}],"next_cursor":null,"snapshot_revision":"42594"}