Skip to content

Update Rust crate ammonia to v4.1.3 [SECURITY] (release/2.1) - autoclosed#343

Closed
renovate[bot] wants to merge 1 commit into
release/2.1from
renovate/release/2.1-crate-ammonia-vulnerability
Closed

Update Rust crate ammonia to v4.1.3 [SECURITY] (release/2.1) - autoclosed#343
renovate[bot] wants to merge 1 commit into
release/2.1from
renovate/release/2.1-crate-ammonia-vulnerability

Conversation

@renovate

@renovate renovate Bot commented Jul 9, 2026

Copy link
Copy Markdown

This PR contains the following updates:

Package Type Update Change
ammonia dependencies patch 4.1.24.1.3

mXSS in ammonia via MathML annotation-xml encoding strip

GHSA-9jh8-v38h-cvhr / RUSTSEC-2026-0193

More information

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:

  1. User writes code like <math><annotation-xml encoding="text/html"><gadget></annotation-xml></math>.
  2. Namespace filtering checks the DOM, and it passes. <gadget> is parsed as HTML.
  3. Attribute filter strips it down to <math><annotation-xml><gadget></annotation-xml></math>. Because the encoding attribute is gone, <gadget> is now parsed as MathML.
  4. The gadget is written in such a way that it exploits the parsing differences between HTML and MathML.

Additionally, the gadget can only be written using a tag that is parsed as raw text in HTML.
These elements are:

  • title
  • textarea
  • xmp
  • iframe
  • noembed
  • noframes
  • plaintext
  • noscript
  • style
  • script

Applications that do not explicitly allow any of these tags should not be affected, since none are allowed by default.


Discovered by: ivan0912 (YesWeHack) · Date: 2026-06-29 · Found via local differential analysis and source review of ammonia's sanitisation pipeline; no third-party systems were tested.

Severity

Unknown

References

This data is provided by OSV and the Rust Advisory Database (CC0 1.0).


Configuration

📅 Schedule: (in timezone Europe/Warsaw)

  • Branch creation
    • At any time (no schedule defined)
  • Automerge
    • At any time (no schedule defined)

🚦 Automerge: Disabled by config. Please merge this manually once you are satisfied.

Rebasing: Whenever PR becomes conflicted, or you tick the rebase/retry checkbox.

👻 Immortal: This PR will be recreated if closed unmerged. Get config help if that's undesired.


  • If you want to rebase/retry this PR, check this box

This PR was generated by Mend Renovate. View the repository job log.

@renovate renovate Bot added dependencies Pull requests that update a dependency file renovate security labels Jul 9, 2026
@renovate renovate Bot changed the title Update Rust crate ammonia to v4.1.3 [SECURITY] (release/2.1) Update Rust crate ammonia to v4.1.3 [SECURITY] (release/2.1) - autoclosed Jul 9, 2026
@renovate renovate Bot closed this Jul 9, 2026
@renovate renovate Bot deleted the renovate/release/2.1-crate-ammonia-vulnerability branch July 9, 2026 12:53
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

dependencies Pull requests that update a dependency file renovate security

Projects

None yet

Development

Successfully merging this pull request may close these issues.

0 participants