Description
Discourse is an open-source discussion platform. Prior to 2026.6.0, 2026.5.1, 2026.4.2, and 2026.1.5, a malicious second factor name on an attacker-controlled account was not escaped in the delete confirmation dialog, allowing stored cross-site scripting when an administrator impersonated that account. This issue is fixed in versions 2026.6.0, 2026.5.1, 2026.4.2, and 2026.1.5.
Published: 2026-07-09
Score: 7.3 High
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Discourse stores a two‑factor authentication name on each user account. In affected releases, the name appears unescaped in the delete‑confirmation modal when an administrator impersonates that account. The unescaped content is rendered by the browser, allowing malicious scripts to run in the administrator’s browser context. This flaw is a classic reflected or stored cross‑site scripting vulnerability (CWE‑79). The impact is that an attacker who can create a malicious two‑factor name and who has access to an administrative impersonation session can inject and execute client‑side code, potentially compromising admin credentials, session hijacking or defacing the site.

Affected Systems

Any Discourse installation running a release before 2026.1.5, 2026.4.2, 2026.5.1 or 2026.6.0 is vulnerable. Administrators with the ability to impersonate users are required to exploit the flaw; therefore, systems enabling admin impersonation are at risk.

Risk and Exploitability

The CVSS score of 7.3 indicates a high severity. The EPSS score of less than 1 % demonstrates a very low probability of exploitation, and the vulnerability is not listed in CISA’s KEV catalog. Exploitation requires an adversary to create a malicious two‑factor name and then let a privileged administrator impersonate that account, making the attack path specialized but feasible where administrator impersonation is enabled. The likely attack vector is via an adm‑admin session that processes the unsanitized modal content.

Generated by OpenCVE AI on July 28, 2026 at 08:35 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade to Discourse version 2026.6.0, 2026.5.1, 2026.4.2, or 2026.1.5, which escape two‑factor names in the confirmation dialog.
  • Disable administrator impersonation until the patch is applied to break the exploit chain.
  • Sanitize any pre‑existing two‑factor authentication names by removing or encoding script tags and HTML special characters to prevent malicious content from appearing in the dialog.

Generated by OpenCVE AI on July 28, 2026 at 08:35 UTC.

Tracking

Sign in to view the affected projects.

Advisories

No advisories yet.

History

Tue, 14 Jul 2026 02:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'none', 'Technical Impact': 'total'}, 'version': '2.0.3'}


Fri, 10 Jul 2026 00:00:00 +0000

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

Thu, 09 Jul 2026 22:15:00 +0000

Type Values Removed Values Added
Description Discourse is an open-source discussion platform. Prior to 2026.6.0, 2026.5.1, 2026.4.2, and 2026.1.5, a malicious second factor name on an attacker-controlled account was not escaped in the delete confirmation dialog, allowing stored cross-site scripting when an administrator impersonated that account. This issue is fixed in versions 2026.6.0, 2026.5.1, 2026.4.2, and 2026.1.5.
Title Discourse: Stored-XSS in 2FA delete confirmation modal
Weaknesses CWE-79
References
Metrics cvssV3_1

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


Subscriptions

Discourse Discourse
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-14T01:19:05.114Z

Reserved: 2026-06-11T15:50:01.282Z

Link: CVE-2026-53963

cve-icon Vulnrichment

Updated: 2026-07-14T01:18:59.525Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-28T08:45:04Z

Weaknesses
  • CWE-79

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