
Loading

Loading
We use strictly necessary cookies to run this site, and analytics cookies to understand how it's used. See our Privacy Policy for details.
A GitHub-reviewed security advisory, not necessarily under active exploitation the way our CISA KEV advisories are, but a real, disclosed vulnerability in an open-source dependency.
Affected packages
Vulnerable: < 3.3.2
Patched in 3.3.2
Vulnerable: >= 4.0.0, < 4.0.2
Patched in 4.0.2
Vulnerable: >= 4.1.0, < 4.1.3
Patched in 4.1.3
Details
If a certain set of MathML tags are enabled, an attacker can inject arbitrary JavaScript code into the user's browser.
The annotation-xml tag has slightly different behavior than the other "integration point"
tags in MathML and SVG, but ammonia didn't handle it, so it didn't correctly
strip the namespace-incompatible tags.
This vulnerability only has an effect when the math and annotation-xml tags
are both enabled, but the encoding attribute is disabled, because it relies
on the following sequence of steps:
<math><annotation-xml encoding="text/html"><gadget></annotation-xml></math>.<gadget> is parsed as HTML.<math><annotation-xml><gadget></annotation-xml></math>. Because the encoding attribute is gone, <gadget> is now parsed as MathML.Additionally, the gadget can only be written using a tag that is parsed as raw text in HTML. These elements are:
Applications that do not explicitly allow any of these tags should not be affected, since none are allowed by default.
Low: Requires both MathML and at least one raw-text HTML tag to be enabled, and most websites don't enable either of those.
Call <code>builder.add_clean_content_tags("annotation-xml")</code> to remove the annotation-xml element and all of its children, including the XSS gadget.
EPSS, exploit probability
Low0.55%
estimated chance of real-world exploitation in the next 30 days, higher than 45.5% of every CVE FIRST.org scores
Refreshed 10/22/2026, via FIRST.org's EPSS model, not CVSS, this measures likelihood of exploitation, not how severe it would be.
Talk to us about this
Find out whether this dependency (or others like it) is actually reachable in your codebase.
Get help patching, or building dependency-scanning into your pipeline going forward.
A secure code review or supply chain review finds this before an advisory does.