Description
Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.
Published: 2026-09-21
Score: 5.4 Medium
EPSS: n/a
KEV: No
Impact: Stored Cross‑Site Scripting that can lead to arbitrary script execution during activity stream viewing
Action: Patch
AI Analysis

Impact

This vulnerability allows a malicious user to embed arbitrary HTML or JavaScript in an actor’s display name, which is then rendered within post action descriptions without escaping. The stored payload is executed in the victim’s browser when the activity stream is viewed, potentially enabling credential theft or session hijacking. The weakness corresponds to CWE‑79, a classic cross‑site scripting flaw.

Affected Systems

Discourse, all versions prior to 2026.7.0, are affected. The issue was fixed in the 2026.7.0 release. No other vendors or product versions are currently impacted.

Risk and Exploitability

The CVSS score of 5.4 indicates moderate severity, yet the flaw permits persistent client‑side code execution. Because the exploit requires only a crafted display name, the attack vector is essentially user input that is rendered without escaping; a malicious account holder could carry it out without additional access. EPSS data is unavailable and the vulnerability is not listed in CISA KEV, suggesting it has not yet been widely exploited, but the potential for widespread impact remains.

Generated by OpenCVE AI on September 21, 2026 at 22:38 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Apply the Discourse 2026.7.0 or newer patch to eliminate the failure to escape actor names
  • Clear any cached activity stream data or reload affected users’ browsers after updating to remove injected markup
  • Implement or enforce stricter validation of display names to encode special characters and prevent future XSS injection

Generated by OpenCVE AI on September 21, 2026 at 22:38 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Mon, 21 Sep 2026 23:00:00 +0000

Type Values Removed Values Added
First Time appeared Discourse
Discourse discourse
Vendors & Products Discourse
Discourse discourse

Mon, 21 Sep 2026 21:30:00 +0000

Type Values Removed Values Added
Description Discourse is an open-source discussion platform. Prior to 2026.7.0, the post action component failed to escape user-controlled display names before interpolating them into an HTML string passed to trustHTML. A user who could choose a crafted display name could persist markup in post action descriptions. Viewing the affected user activity streams could execute attacker-controlled script in another user's browser. This issue is fixed in version 2026.7.0.
Title Discourse: Stored XSS via unescaped actor name in post actions
Weaknesses CWE-79
References
Metrics cvssV3_1

{'score': 5.4, 'vector': 'CVSS:3.1/AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N'}


Subscriptions

Discourse Discourse
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-09-21T21:17:38.733Z

Reserved: 2026-07-07T15:00:50.979Z

Link: CVE-2026-59830

cve-icon Vulnrichment

No data.

cve-icon NVD

Status : Received

Published: 2026-09-21T22:16:57.353

Modified: 2026-09-21T22:16:57.353

Link: CVE-2026-59830

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-09-21T22:45:17Z

Weaknesses
  • CWE-79

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