CVE-2026-97045: Check all ancestor namespace transitions when rendering raw text in html in golang.org/x/net
In childTextNodesAreLiteral, walking up the tree previously stopped at the nearest foreign ancestor once an HTML integration point was found. However, that integration point may itself be a descendant of an element that was foster-parented into a foreign namespace (such as <mglyph> or <malignmark> fostered under <mtext>), causing a parser to resolve the subtree in a different foreign namespace upon re-parsing the rendered output. Continue walking the full ancestor chain and verify that every transition from a non-empty namespace occurs at an HTML integration point before emitting literal text.
Affected Software
Remediation
Recommended actions to resolve this vulnerability, in priority order.
- Compensating control
In golang.org/x/net, update childTextNodesAreLiteral to continue walking the full ancestor chain and verify that every transition from a non-empty namespace occurs at an HTML integration point before emitting literal text, including when the integration point is beneath a foster-parented foreign-namespace element such as <mglyph> or <malignmark> under <mtext>.