All vulnerabilities
CVE-2026-61784GHSA-j8r4-32c5-33rc

xhtml-purifier has HTML attribute-injection (sanitizer bypass) that leads to XSS

cstigler xhtml-purifiernpmLibraries & packages
CVSS
6.1Medium
ExploitationNo known exploitationNot in CISA KEV, which does not prove it is unexploitedCISA KEV
Exploit odds (EPSS)0.17%Chance of exploitation activity in the next 30 days, higher than 5% of CVEs. Scored 23 Oct 2026FIRST EPSS
Fixed in0.4.3Fixed versionGitHub
Published24 Sep 2026Updated 24 Sep 2026CVE List

What fixes it

  • 0.4.3xhtml-purifier, npmGitHubnpm install xhtml-purifier@0.4.3

A fixed version on one release line is not the upgrade target for every line. Check your exact version and any vendor backports.

Description

xhtml-purifier does not HTML-entity-encode attribute values when serializing its sanitized output. In attributeString() (XHTMLPurifier.js, around line 148) the attribute value is concatenated directly into a double-quoted attribute without encoding. As a result, an attacker-controlled value in any allowed attribute (class, style, title, alt, src, href) can include a double-quote character to break out of the attribute and inject an additional attribute, such as a JavaScript event handler (for example onmouseover or onerror). The injected handler survives sanitization and executes when the output is rendered, which is a sanitizer bypass leading to cross-site scripting. The fix HTML-entity-encodes attribute values before serialization.

Text from CVE List

Affected versions 3

  • xhtml-purifier, npm<= 0.4.1GitHub
  • node-xhtml-purifieraffected: < 0.4.3CVE List
  • xhtml-purifier, npmfrom first release, fixed in 0.4.3OSV

References 6