Vulnerability · Published Jun 12, 2026 · Assigned by GitHub_M

CVE-2026-44990Apostrophe has default XSS via `xmp` raw-text passthrough in `sanitize-html`

Critical 9.3

In plain English

A critical-severity cross-site scripting in sanitize-html from apostrophecms. Proof-of-concept exploit code is public. The chance it is exploited in the next 30 days is estimated at 0.7% (higher than 53% of all known vulnerabilities). Fixed versions are available - upgrade the affected package.

Severity (CVSS 3.1)9.3Critical
Exploit odds (30 days)0.7%top 47.3% of all CVEs
Exploited in the wildNo reportsCISA SSVC: poc
Attack toolingNoneno public tooling known

Official description

ApostropheCMS is an open-source Node.js content management system, and sanitize-html provides a simple HTML sanitizer with a clear API. Under the default configuration, versions of `sanitize-html` prior to 2.17.4 can turn attacker-controlled content inside a disallowed `xmp` element into live HTML or JavaScript. This is a sanitizer bypass in the default `disallowedTagsMode: 'discard'` path and can lead to stored XSS in applications that render sanitized output back to users. Version 2.17.4 patches the issue.

Affected packages & fixed versions

EcosystemPackageFixed inAdvisory
npmsanitize-html2.17.4GHSA-rpr9-rxv7-x643

Affected products (as reported)

VendorProductVersions
apostrophecms sanitize-html < 2.17.4

Weakness: CWE-79 · Vector: CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:H/I:H/A:N

References