Description
Etherpad is a real-time collaborative editor. Prior to 3.3.0, getHTMLFromAtext in src/node/utils/ExportHtml.ts interpolates values from the exportHtmlAdditionalTagsWithData plugin hook into span data attributes without HTML attribute escaping. A pad editor can place an attacker-controlled value into the attribute pool through moveOpsToNewPool and AttributePool.putAttrib. When a bundled plugin such as ep_font_color or ep_font_size registers the hook, opening the resulting HTML export causes the value to execute as stored cross-site scripting in the Etherpad origin. This issue is fixed in version 3.3.0.
Published: 2026-08-19
Score: 5.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

The vulnerability arises in Etherpad’s HTML export feature, where custom plugin data inserted into the export is not properly escaped. By placing malicious input via the AttributePool before the export, an attacker can place attacker‑controlled values into the attribute pool through moveOpsToNewPool and AttributePool.putAttrib. When the resulting HTML is opened in a browser, the unescaped data becomes executable script, causing stored cross‑site scripting within the Etherpad domain. The issue is a typical input validation weakness categorized as CWE‑79. The offending code path relies on the getHTMLFromAtext routine and the exportHtmlAdditionalTagsWithData hook, which are invoked by plugins such as ep_font_color or ep_font_size.

Affected Systems

Prior to version 3.3.0 of Etherpad, any deployment that enables the exportHtmlAdditionalTagsWithData hook from a plugin can be affected. This includes instances that have the ep_font_color or ep_font_size plugins installed, or any other plugin that registers the same hook. The vulnerability is fixed starting with release v3.3.0; earlier releases are vulnerable regardless of other configuration settings. The CWE reference is CWE‑79.

Risk and Exploitability

The reported CVSS score of 5.3 indicates moderate overall impact, with the exploitation possible when an attacker has control over the attribute data for a pad. The EPSS score is not available, so the exact likelihood cannot be quantified, but the KEV catalogue does not list this vulnerability, suggesting that no widespread exploitation has been reported. The attack is primarily limited to browsers rendering the exported HTML; attackers would need to get a victim to open the compromised file. Consequently, the risk is moderate for environments that expose exported files directly to users.

Generated by OpenCVE AI on August 20, 2026 at 12:39 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Etherpad to v3.3.0 or later, which removes the unsafe attribute handling.
  • Disable or uninstall any plugins that register the exportHtmlAdditionalTagsWithData hook, such as ep_font_color or ep_font_size, until the upgrade can be performed.
  • If exporting HTML is required, implement server‑side validation or escaping for any user‑provided content that may be included in exported attributes to prevent injection.

Generated by OpenCVE AI on August 20, 2026 at 12:39 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-2jp7-wwpg-3p9w Etherpad has stored XSS in HTML export via unescaped attribute-pool values
History

Fri, 21 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
First Time appeared Etherpad
Etherpad etherpad
Vendors & Products Etherpad
Etherpad etherpad

Thu, 20 Aug 2026 13:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'yes', 'Exploitation': 'none', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Wed, 19 Aug 2026 19:45:00 +0000

Type Values Removed Values Added
Description Etherpad is a real-time collaborative editor. Prior to 3.3.0, getHTMLFromAtext in src/node/utils/ExportHtml.ts interpolates values from the exportHtmlAdditionalTagsWithData plugin hook into span data attributes without HTML attribute escaping. A pad editor can place an attacker-controlled value into the attribute pool through moveOpsToNewPool and AttributePool.putAttrib. When a bundled plugin such as ep_font_color or ep_font_size registers the hook, opening the resulting HTML export causes the value to execute as stored cross-site scripting in the Etherpad origin. This issue is fixed in version 3.3.0.
Title Etherpad: Stored XSS in HTML export via unescaped attribute-pool values
Weaknesses CWE-79
References
Metrics cvssV4_0

{'score': 5.3, 'vector': 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:P/VC:N/VI:N/VA:N/SC:L/SI:L/SA:N'}


Subscriptions

Etherpad Etherpad
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-08-20T12:39:30.300Z

Reserved: 2026-06-16T14:41:54.578Z

Link: CVE-2026-55090

cve-icon Vulnrichment

Updated: 2026-08-20T12:39:21.497Z

cve-icon NVD

Status : Received

Published: 2026-08-19T20:17:18.233

Modified: 2026-08-20T13:19:00.837

Link: CVE-2026-55090

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-08-21T13:03:29Z

Weaknesses
  • CWE-79

    Improper Neutralization of Input During Web Page Generation ('Cross-site Scripting')