Thephpleague Commonmark
CVE-2026-86431
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.
What this means for your business
- It affects Thephpleague Commonmark. It matters if your company, or a supplier that handles your data, runs it.
- Code showing how to exploit it has been published, but real attacks have not been confirmed.
- An attacker can use it remotely, over a network, without a login, and without anyone at your company clicking anything.
What to do
- 1Check whether your company or your suppliers run Thephpleague Commonmark, and which version. The affected versions are listed further down this page.
- 2If you do, apply the vendor's fix. A patch or vendor advisory has been published.
Not sure if your company is exposed?
Fastnexa’s certified penetration testers can check whether attackers could use this flaw, or others like it, against your websites, apps and network. The full test is free for our first 10 founding clients until 31 December 2026.
Scoring
- CVSS
- 7.2 (v3.1)
- Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:C/C:L/I:L/A:N- CVSS v4
- 6.9
- Weakness
- CWE-79
- Assigned by
- disclosure@vulncheck.com
Dates
- Published
- 2026-09-07
- Last modified
- 2026-09-09
- Sources
- NVD
Affected products
- Thephpleague Commonmark2.7.0 - 2.9.1
As listed in the NVD configuration data. Not a statement about your estate.