CVE-2026-25543
HtmlSanitizer has a bypass via template tag
HtmlSanitizer is a .NET library for cleaning HTML fragments and documents from constructs that can lead to XSS attacks. Prior to versions 9.0.892 and 9.1.893-beta, if the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed. This issue has been patched in versions 9.0.892 and 9.1.893-beta.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- None
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- None
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.3
HtmlSanitizer has a bypass via template tag
HtmlSanitizer is a .NET library for cleaning HTML fragments and documents from constructs that can lead to XSS attacks. Prior to versions 9.0.892 and 9.1.893-beta, if the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed. This issue has been patched in versions 9.0.892 and 9.1.893-beta.
- Record
CVE-2026-25543- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116
- Updated
- 2026-11-02
EUVDEUVD-2026-5328
6.3
HtmlSanitizer is a .NET library for cleaning HTML fragments and documents from constructs that can lead to XSS attacks. Prior to versions 9.0.892 and 9.1.893-beta, if the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed. This issue has been patched in versions 9.0.892 and 9.1.893-beta.
- Record
EUVD-2026-5328- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Updated
- 2026-11-02
GitHub AdvisoriesGHSA-j92c-7v7g-gj3f
6.3
HtmlSanitizer has a bypass via template tag
Impact
If the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed.
The lack of sanitization of the template tag brings up two bypasses:
- it is still possible to forcibly render the contents of a
<template>tag through mutation XSS. The DOM parsers in browsers such as Chromium have a node depth limit of 512 and tags which are beyond that depth are flattened. This in turn allows elements within<template>(which are not sanitized) to be effectively 'popped out'. An example would look like this:<div>[...]<template><script>alert('xss')</script>where[...]denotes at least another 509 opening<div>tags. - If in addition to the template tag, the
shadowrootmodeattribute is allowed throughsanitizer.AllowedAttributes.Add("shadowrootmode");, the simple payload of<div><template shadowrootmode="open"><script>alert('xss')</script>would bypass the sanitizer. This is because such usage of<template>attaches a shadow root to its parent:<div>, and its contents will be rendered.
Note that the default configuration is not affected because the template tag is disallowed by default.
Patches
The problem has been patched in versions 9.0.892 and 9.1.893-beta.
Workarounds
Disallow the template tag. It is disallowed by default.
Resources
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template
- Record
GHSA-j92c-7v7g-gj3f- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-79, CWE-116
- Updated
- 2026-11-02
NVD
6.3
HtmlSanitizer is a .NET library for cleaning HTML fragments and documents from constructs that can lead to XSS attacks. Prior to versions 9.0.892 and 9.1.893-beta, if the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed. This issue has been patched in versions 9.0.892 and 9.1.893-beta.
- Record
CVE-2026-25543- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X - CVSS 3.1
- 6.1 Medium
CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N - Weakness
- CWE-116, CWE-79
- Updated
- 2026-11-02
OSV
6.3
HtmlSanitizer has a bypass via template tag
HtmlSanitizer is a .NET library for cleaning HTML fragments and documents from constructs that can lead to XSS attacks. Prior to versions 9.0.892 and 9.1.893-beta, if the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed. This issue has been patched in versions 9.0.892 and 9.1.893-beta.
- Record
CVE-2026-25543- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116
- Updated
- 2026-11-02
OSVGHSA-j92c-7v7g-gj3f
6.3
HtmlSanitizer has a bypass via template tag
Impact
If the template tag is allowed, its contents are not sanitized. The template tag is a special tag that does not usually render its contents, unless the shadowrootmode attribute is set to open or closed.
The lack of sanitization of the template tag brings up two bypasses:
- it is still possible to forcibly render the contents of a
<template>tag through mutation XSS. The DOM parsers in browsers such as Chromium have a node depth limit of 512 and tags which are beyond that depth are flattened. This in turn allows elements within<template>(which are not sanitized) to be effectively 'popped out'. An example would look like this:<div>[...]<template><script>alert('xss')</script>where[...]denotes at least another 509 opening<div>tags. - If in addition to the template tag, the
shadowrootmodeattribute is allowed throughsanitizer.AllowedAttributes.Add("shadowrootmode");, the simple payload of<div><template shadowrootmode="open"><script>alert('xss')</script>would bypass the sanitizer. This is because such usage of<template>attaches a shadow root to its parent:<div>, and its contents will be rendered.
Note that the default configuration is not affected because the template tag is disallowed by default.
Patches
The problem has been patched in versions 9.0.892 and 9.1.893-beta.
Workarounds
Disallow the template tag. It is disallowed by default.
Resources
https://developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template
- Record
GHSA-j92c-7v7g-gj3f- CVSS 4.0
- 6.3 Medium
CVSS:4.0/AV:N/AC:L/AT:P/PR:N/UI:N/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N - Weakness
- CWE-116, CWE-79
- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
HtmlSanitizerNuGet |
before 9.0.892 | 9.0.892 |
HtmlSanitizerNuGet |
9.1.878-beta up to 9.1.893-beta | 9.1.893-beta |
HtmlSanitizerNuGet |
before 9.0.892, plus listed versions 1.0.4925.298151.0.4927.308731.1.5243.284481.1.5297.284031.1.5338.17998 Show 45 moreShow less2.0.5449.205502.0.5548.249322.0.5595.221832.0.5595.303252.0.5623.304652.0.5735.242963.0.5781.31354-beta3.0.66-beta3.1.67-beta3.1.75-beta3.1.763.1.793.1.913.1.933.1.983.2.100-beta3.2.1033.2.1053.2.96-beta3.3.122-beta3.3.125-beta3.3.126-beta3.3.127-beta3.3.128-beta3.3.129-beta3.3.130-beta3.3.131-beta3.3.132-beta3.3.1423.3.143-beta3.3.144-beta3.3.145-beta3.3.146-beta3.3.147-beta3.3.148-beta3.4.152-beta3.4.1563.5.168-beta3.5.169-beta4.0.1794.0.1804.0.1814.0.1824.0.1834.0.185 |
9.0.892 |
History
| Recorded | Changed | Sources |
|---|---|---|
| first indexed | CVE List, EUVD, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2026-25543 is a medium vulnerability (CVSS 6.3) in Htmlsanitizer Project Htmlsanitizer, published February 3, 2026. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.27%, the 19th percentile. Fixed in HtmlSanitizer 9.0.892.
References
github.com/mganss/HtmlSanitizer/security/advisories/GHSA-j92c-7v7g-gj3f
github.com/mganss/HtmlSanitizer/commit/0ac53dca30ddad963f2b243669a5066933d82b81
nuget.org/packages/HtmlSanitizer/9.0.892
nuget.org/packages/HtmlSanitizer/9.1.893-beta
developer.mozilla.org/en-US/docs/Web/HTML/Reference/Elements/template
github.com/mganss/HtmlSanitizer/releases/tag/v9.0.892
Left out here: 70 versions. The JSON record has them.