GitHub Advisoryadvisory · Packagist

GHSA-4v6x-c7xx-hw9f CommonMark has DisallowedRawHtml extension bypass via whitespace in HTML tag names

MEDIUM Published 2026-03-06 Modified 2026-03-20 Official page ↗
Aliases
CVE-2026-30838
Ecosystem
Packagist
Packages
league/commonmark
Severity
Moderate
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:P/VC:N/VI:L/VA:N/SC:L/SI:L/SA:N
Weaknesses
CWE-79
Reviewed
2026-03-06

Affected packages

• Packagist league/commonmark: >= 2.0.0, < 2.8.1 → fixed in 2.8.1

Description

Impact The `DisallowedRawHtml` extension can be bypassed by inserting a newline, tab, or other ASCII whitespace character between a disallowed HTML tag name and the closing `>`. For example, `` would pass through unfiltered and be rendered as a valid HTML tag by browsers. This is a cross-site scripting (XSS) vector for any application that relies on this extension to sanitize untrusted user input. All applications using the `DisallowedRawHtml` extension to process untrusted markdown are affected. Applications that use a dedicated HTML sanitizer (such as HTML Purifier) on the rendered output are not affected. Patches Fixed in 2.8.1. The regex character class `[ \/>]` was changed to `[\s\/>]` to match all whitespace characters that browsers accept as valid tag name terminators. Workarounds • Set the `html_input` configuration option to `'escape'` or `'strip'` to disable all raw HTML, though this is a broader restriction than the `DisallowedRawHtml` extension provides. • Pass the rendered HTML through a dedicated HTML sanitizer before serving it to users (always recommended)

Related

Alias · CVE (1)

  • CVE-2026-30838 league/commonmark is a PHP Markdown parser. vulnerability

Weakness · CWE (1)

  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References