Stored XSS in sanitize-html Defaults via Disallowed `xmp` Tag Bypass
A vulnerability tracked as CVE-2026-44990 allows stored cross-site scripting in sanitize-html when applications use the library’s default configuration and later render sanitized user content as trusted HTML. The flaw affects versions prior to 2.17.4 and stems from the handling of the disallowed xmp element: because htmlparser2 treats xmp as a raw-text tag, attacker-supplied markup inside it is preserved as text during sanitization but can be emitted back as active HTML or JavaScript under the default disallowedTagsMode: 'discard' behavior.
GitHub’s advisory and the upstream patch say the bypass can let payloads such as <script>, img event handlers, and svg-embedded script content survive filtering and execute in a victim’s browser. The fix in 2.17.4 adds xmp to nonTextTags so content inside a disallowed xmp tag is dropped instead of re-emitted, and regression tests were added to confirm the malicious content is removed. The issue was reported by Vincenzo Turturro (sushi-gif), and users of affected sanitize-html deployments, including those in ApostropheCMS, were urged to update immediately.

Get ahead of threats like this
Mallory correlates global threat intelligence with your attack surface — know if you’re exposed before adversaries strike.
How this story unfolded
3 events from the most recent confirmed update back to the earliest known activity.
CVE-2026-44990 is recorded for sanitize-html vulnerability
CVE-2026-44990 was recorded for the sanitize-html xmp raw-text passthrough flaw affecting versions prior to 2.17.4. The entry notes the issue can cause stored XSS under default settings and identifies 2.17.4 as the fixed version.
GitHub advisory discloses default XSS in sanitize-html
A GitHub security advisory described a sanitizer bypass in sanitize-html 2.17.3 that can lead to stored cross-site scripting under the default configuration. The advisory explained that content inside disallowed xmp tags could be emitted back as active HTML or JavaScript when rendered by browsers.
sanitize-html security patch fixes xmp-based XSS bypass
A security patch was released for sanitize-html to fix an XSS bypass involving disallowed xmp tags. The fix adds xmp to nonTextTags handling so malicious content inside disallowed xmp elements is dropped, and regression tests were added for script, img onerror, and svg/script payloads.
Related entities
Vulnerabilities, threat actors, malware, products, organizations, and breaches Mallory has linked to this story.
Sources
3 references tracked. Mallory keeps watching after this page renders.
CVE-2026-44990 - Apostrophe has default XSS via `xmp` raw-text passthrough in `sanitize-html`
cvefeed.io
Open sourceDefault XSS via `xmp` raw-text passthrough in `sanitize-html` · Advisory · apostrophecms/apostrophe · GitHub
github.com
Open sourceMerge commit from fork · apostrophecms/apostrophe@8d4c882 · GitHub
github.com
Open sourceSee the full picture, correlated to your attack surface.
Map indicators from this story to your assets and identify affected systems in minutes.
Every observed campaign, victim, and pivot linked to actors named in this story.
Malware, exploits, and IOCs connected to the activity described here.
YARA, Sigma, and Snort rules deployed to your SIEM as soon as they’re published.
Get matching new stories delivered to your team as they break — not the next morning.
Ask questions about this story and take action on the answers.


