GitHub Advisoryadvisory · npm

GHSA-2jp7-wwpg-3p9w Etherpad has stored XSS in HTML export via unescaped attribute-pool values

HIGH Published 2026-08-17 Modified 2026-08-17 Official page ↗
Aliases
CVE-2026-55090
Ecosystem
npm
Packages
ep_etherpad-lite
Severity
High
CVSS vector
CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N
Weaknesses
CWE-79
Reviewed
2026-08-17

Affected packages

• npm ep_etherpad-lite: < 3.3.0 → fixed in 3.3.0

Description

Fix: PR #7905 (ether/etherpad). `getHTMLFromAtext` in `src/node/utils/ExportHtml.ts` interpolates values from the `exportHtmlAdditionalTagsWithData` plugin hook into `span data-=""` without HTML-attribute escaping. The value comes verbatim from the pad attribute pool, which a pad editor controls via a crafted changeset (only `author` attributes are validated; `moveOpsToNewPool` -> `AttributePool.putAttrib` stores any value). With a bundled plugin that registers the hook (ep_font_color / ep_font_size), an attribute value such as `" onload="alert(1)` is exported as `` and served as text/html, yielding stored XSS for any collaborator who opens the export. Fix: escape the name and value via `Security.escapeHTMLAttribute`. PR #7905 also adds a startup warning when default/placeholder account or SSO credentials are configured (defense-in-depth, non-breaking).

Related

Alias · CVE (1)

  • CVE-2026-55090 Etherpad is a real-time collaborative editor. vulnerability

Weakness · CWE (1)

  • CWE-79 Improper Neutralization of Input During Web Page Generation weakness

References