league/commonmark contains a XSS vulnerability in Attributes extension
Moderate severity
GitHub Reviewed
Published
May 5, 2025
in
thephpleague/commonmark
•
Updated May 5, 2025
Description
Published by the National Vulnerability Database
May 5, 2025
Published to the GitHub Advisory Database
May 5, 2025
Reviewed
May 5, 2025
Last updated
May 5, 2025
Summary
Cross-site scripting (XSS) vulnerability in the Attributes extension of the league/commonmark library (versions 1.5.0 through 2.6.x) allows remote attackers to insert malicious JavaScript calls into HTML.
Details
The league/commonmark library provides configuration options such as
html_input: 'strip'
andallow_unsafe_links: false
to mitigate cross-site scripting (XSS) attacks by stripping raw HTML and disallowing unsafe links. However, when the Attributes Extension is enabled, it introduces a way for users to inject arbitrary HTML attributes into elements via Markdown syntax using curly braces.As a result, even with the secure configuration shown above, an attacker can inject dangerous attributes into applications using this extension via a payload such as:
Which results in the following HTML:
Which causes the JS to execute immediately on page load.
Patches
Version 2.7.0 contains three changes to prevent this XSS attack vector:
on
are considered unsafe and blocked by defaulthref
andsrc
attributes now respect the existingallow_unsafe_links
configuration optionWorkarounds
If upgrading is not feasible, please consider:
AttributesExtension
for untrusted usersReferences