GHSA-2jp7-wwpg-3p9w: XSS

Published Aug 17, 2026
·
Updated

Fix: PR #7905 (ether/etherpad).

getHTMLFromAtext in src/node/utils/ExportHtml.ts interpolates values from the exportHtmlAdditionalTagsWithData plugin hook into span data-<k>="<v>" 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 (epfontcolor / epfontsize), an attribute value such as " onload="alert(1) is exported as <span data-color="" onload="alert(1)"> 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).

Affected Software

1 affected componentFixes available
npm/ep_etherpad-lite<=1.8.14
3.3.0

Remediation

Recommended actions to resolve this vulnerability, in priority order.

  1. Upgrade

    Upgrade npm/ep_etherpad-lite to a version that resolves this vulnerability.

    Fixed in 3.3.0
  2. Upgrade

    Upgrade ether/etherpad to a version that resolves this vulnerability.

    Patch PR #7905
  3. Configuration

    Ensure any values injected via the ep_font_color / ep_font_size plugin hook and exported by getHTMLFromAtext (src/node/utils/ExportHtml.ts) are escaped for HTML attributes using Security.escapeHTMLAttribute (escape the attribute name and attribute value).

    Security.escapeHTMLAttribute usage HTML attribute escaping for exported attribute values = Use Security.escapeHTMLAttribute to escape both name and value before interpolation into span data-<k>="<v>"
  4. Operational

    Review and address the defense-in-depth startup warning behavior added in PR #7905: investigate/replace any default/placeholder account or SSO credentials that are configured, to reduce risk while the stored XSS fix is deployed.

Event History

Aug 17, 2026
Advisory Published
via GitHub·05:49 PM
Data Sourced
via GitHub·05:49 PM
DescriptionWeaknessAffected Software
Free Weekly Intel

Don't miss critical vulnerabilities

Join thousands of security professionals who receive our weekly digest of trending CVEs, zero-days, and exploited vulnerabilities.

No spam. Unsubscribe anytime.

Frequently Asked Questions

1

What is the severity of GHSA-2jp7-wwpg-3p9w?

The severity of GHSA-2jp7-wwpg-3p9w is rated as 65.

2

How do I fix GHSA-2jp7-wwpg-3p9w?

To fix GHSA-2jp7-wwpg-3p9w, update to the latest version of npm/ep_etherpad-lite that includes PR #7905.

3

What type of vulnerability is GHSA-2jp7-wwpg-3p9w?

GHSA-2jp7-wwpg-3p9w is classified as a Cross-Site Scripting (XSS) vulnerability.

4

What part of the code is affected by GHSA-2jp7-wwpg-3p9w?

GHSA-2jp7-wwpg-3p9w affects the `getHTMLFromAtext` function in `src/node/utils/ExportHtml.ts`.

5

Who is affected by GHSA-2jp7-wwpg-3p9w?

Users of npm/ep_etherpad-lite who use the `exportHtmlAdditionalTagsWithData` plugin hook are affected by GHSA-2jp7-wwpg-3p9w.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203