Exponential event growth with `ENABLE_WIKILINKS`
Impact
When Options::ENABLE_WIKILINKS is enabled, a wikilink with a pipe separator and empty display text, such as [[a|]], leaks its child node's sibling chain into the content that follows it. Each such link roughly doubles the number of events the parser yields for the rest of the document, so output grows exponentially with input size: 16 repetitions of [[a|]] (112 bytes) yield 327,676 events, where the fixed parser yields 65. A document of a few kilobytes is enough to exhaust memory in a process that collects the events or renders them to HTML.
Source excerpt · OSVAffected packages
Start with the recorded fix for your release branch. Check your installed version and test compatibility before upgrading. Fixing this advisory does not rule out other vulnerabilities in the release.
| Affected range | Recorded fix |
|---|---|
| From 0.13.0 before 0.13.5Semantic versions | 0.13.5 |
Version evidence: OSV · RUSTSEC-2026-0414
View original version evidence (0 explicit versions)
Original source description
When Options::ENABLE_WIKILINKS is enabled, a wikilink with a pipe separator
and empty display text, such as [[a|]], leaks its child node's sibling chain
into the content that follows it. Each such link roughly doubles the number of
events the parser yields for the rest of the document, so output grows
exponentially with input size: 16 repetitions of [[a|]] (112 bytes) yield
327,676 events, where the fixed parser yields 65. A document of a few kilobytes
is enough to exhaust memory in a process that collects the events or renders
them to HTML.
Applications that parse untrusted Markdown with ENABLE_WIKILINKS set,
including through Options::all(), are affected. The option is off by default.
Parsing without it is not affected.
The flaw was fixed in #1102 and released in 0.13.5.