Skip to main content
Live Webinar with SANS (June 25)— Agentic CTI Automation for Fun & ProfitRegister Free
Mallory
Back to intelligence
open-source-dependency-vulnerabilitywidely-deployed-product-advisoryinternet-facing-service-vulnerability

Stored XSS in sanitize-html Defaults via Disallowed `xmp` Tag Bypass

Updated 9d agoFirst seen Jun 12, 20263 sources

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.

Share:
Stored XSS in sanitize-html Defaults via Disallowed `xmp` Tag Bypass
Stay ahead

Get ahead of threats like this

Mallory correlates global threat intelligence with your attack surface — know if you’re exposed before adversaries strike.

EVENT TIMELINE

How this story unfolded

3 events from the most recent confirmed update back to the earliest known activity.

3 EVENTS
Jun 12, 202611d ago

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.

CVE-2026-44990 - Apostrophe has default XSS via `xmp` raw-text passthrough in `sanitize-html`
May 13, 20261mo ago

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.

Default XSS via `xmp` raw-text passthrough in `sanitize-html` · Advisory · apostrophecms/apostrophe · GitHub

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.

Merge commit from fork · apostrophecms/apostrophe@8d4c882 · GitHub
LINKED ENTITIES

Related entities

Vulnerabilities, threat actors, malware, products, organizations, and breaches Mallory has linked to this story.

4 LINKEDOpen in app
Affected products
1 linked
Apostrophecms
Organizations
2 linked
Apostrophe Technologies Inc.sanitize-html
The operational view lives in Mallory

See the full picture, correlated to your attack surface.

This page covers what’s public. Mallory adds the parts that aren’t — which of your assets are affected, which threat actors are using it right now, which detections to deploy, and what to do next.
Exposure mapping

Map indicators from this story to your assets and identify affected systems in minutes.

Threat actor evidence

Every observed campaign, victim, and pivot linked to actors named in this story.

Associated malware

Malware, exploits, and IOCs connected to the activity described here.

Detection signatures

YARA, Sigma, and Snort rules deployed to your SIEM as soon as they’re published.

Scheduled alerts

Get matching new stories delivered to your team as they break — not the next morning.

AI threads

Ask questions about this story and take action on the answers.