GHSA-j8r4-32c5-33rc

Suggest an improvement
Source
https://github.com/advisories/GHSA-j8r4-32c5-33rc
Import Source
https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-j8r4-32c5-33rc/GHSA-j8r4-32c5-33rc.json
JSON Data
https://api.osv.dev/v1/vulns/GHSA-j8r4-32c5-33rc
Aliases
Published
2026-09-24T19:33:23Z
Modified
2026-09-24T19:45:04Z
Severity
  • 6.1 (Medium) CVSS_V3 - CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:C/C:L/I:L/A:N CVSS Calculator
Summary
xhtml-purifier has HTML attribute-injection (sanitizer bypass) that leads to XSS
Details

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.

Database specific
{
    "cwe_ids":  [
        "CWE-116",
        "CWE-79"
    ],
    "github_reviewed":  true,
    "github_reviewed_at":  "2026-09-24T19:33:23Z",
    "nvd_published_at":  "2026-09-24T18:17:16Z",
    "severity":  "MODERATE"
}
References

Affected packages

npm / xhtml-purifier

Package

Name
xhtml-purifier
View open source insights on deps.dev
Purl
pkg:npm/xhtml-purifier

Affected ranges

Type
SEMVER
Events
Introduced
0 Unknown introduced version / All previous versions are affected
Fixed
0.4.3

Database specific

last_known_affected_version_range
"<= 0.4.1"
source
"https://github.com/github/advisory-database/blob/main/advisories/github-reviewed/2026/09/GHSA-j8r4-32c5-33rc/GHSA-j8r4-32c5-33rc.json"