CVE-2026-86431 commonmark before 2.9.1 XSS via AttributesExtension form feed bypass
Attackers can inject malicious scripts into rendered HTML by bypassing attribute filters in the commonmark library's AttributesExtension.
- Exploited in the wild
- Not known
- Login needed
- Not needed
- Attackable
- Over the internet
- Victim action needed
- Not needed
- Fix
- Available
What is CVE-2026-86431?
CVE-2026-86431 is a medium-severity cross-site scripting vulnerability in thephpleague commonmark, published on 7 Sep 2026. An attacker can exploit it over the internet without logging in, with no action from the victim.
Official description
league/commonmark (thephpleague/commonmark) versions >= 2.7.0 and < 2.9.1 contain a cross-site scripting vulnerability in the AttributesExtension. Prefixing an attribute name with a single U+000C form feed byte (e.g. {\x0Conclick="alert(1)"}) bypasses the AttributesHelper::filterAttributes() 'on*' event-handler filter because PHP's trim() does not strip U+000C, causing the attribute to be written verbatim into the output where browsers parse it as a genuine event handler. The same prefix also defeats the allow_unsafe_links check, allowing javascript: URIs through href/src attributes even when allow_unsafe_links is false. Exploitation requires processing untrusted Markdown with the AttributesExtension enabled; the injected script executes when the rendered HTML is viewed. Fixed in 2.9.1.
Weakness: CWE-79
Which versions are affected by CVE-2026-86431?
2 open source packages ship an affected version, including league/commonmark. It affects 1 product.
| Package | Affected | Fixed in |
|---|---|---|
league/commonmark Packagist | From 2.7.0 | 2.9.1 |
league/commonmark Packagist | From 2.7.0 | 2.9.1 |
Products include Thephpleague Commonmark.
How do I fix CVE-2026-86431?
Upgrade league/commonmark to 2.9.1 or later.
Escape output for the context it lands in and set a strict Content Security Policy. Upgrading the affected component is the real fix. More about Cross-site scripting.
Is CVE-2026-86431 being exploited?
There is no known exploitation of CVE-2026-86431 in the wild and no public exploit code.
Other vulnerabilities in thephpleague commonmark
- CVE-2026-86428 commonmark 1.5.0 before 2.10.0 Denial of Service via Attributes
- CVE-2026-86429 commonmark before 2.9.1 Denial of Service via SmartPunct and Attributes
- CVE-2026-86430 league/commonmark before 2.9.1 Denial of Service via parsing
- CVE-2026-33347 league/commonmark has an embed extension allowed_domains bypass
- CVE-2019-10010 Moderate severity vulnerability that affects league/commonmark
Sources
Also known as DEBIAN-CVE-2026-86431, GHSA-f8fg-pg57-v4j8, GHSA-m24x-mf52-x8gc, UBUNTU-CVE-2026-86431.