Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconRegister or compromise low-privilege Discourse account
-
DeliveryCraft [chat quote] BBCode block with JavaScript payload in username field
-
ExploitPost malicious chat message in any accessible channel
-
InstallWait for moderator or admin to open transcript in Rich Text Editor
-
C2innerHTML renders payload as live HTML
-
ExecuteAttacker script executes in victim's authenticated browser session
-
ImpactSession token exfiltrated or privileged action performed
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V1 - Encoding and Sanitization Output encoding, context-aware escaping
MITRE ATT&CK
2 techniques across 2 tactics: Initial Access, Execution The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The attacker must hold a valid Discourse account with permission to send chat messages (CVSS PR:L - low-privilege authenticated access). The Discourse Chat plugin must be enabled on the target instance; the Rich Text Editor must be the active editor (it is the default in modern Discourse). The victim must open or view the crafted chat transcript in the Rich Text Editor (CVSS UI:R - active user interaction), which occurs naturally for moderators and admins reviewing chat content. No non-default server configuration is required beyond the Chat plugin being active. Exploitation is entirely blocked for anonymous or unauthenticated visitors. The severity of impact scales with the privilege level of the victim: a standard user session yields lower-value access than an admin session, which could lead to full community takeover. |
| Impact | The CVSS 8.7 rating is well-supported: AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N captures a network-accessible stored XSS requiring only low-privilege (authenticated) access to inject the payload, with scope change reflecting that the exploit executes in the victim's browser context rather than the server. The scope change and C:H/I:H ratings reflect the ability to steal session tokens, hijack moderator or admin accounts, and perform privileged actions entirely through the victim's authenticated session. The PR:L constraint limits opportunistic exploitation - an unauthenticated visitor cannot deliver the payload - but on active Discourse communities any registered member qualifies, making the effective attacker pool large. UI:R is a limiting factor, though the natural workflow of moderators reviewing chat transcripts makes victim interaction highly probable. EPSS data was not provided in the input; KEV status is not confirmed. The absence of a known public exploit is the primary mitigating factor, though the commit diff and accompanying test case (which embeds |
| Exploit ScenarioDerived | An authenticated Discourse user crafts a chat message using the BBCode |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 10, 2026
Stored cross-site scripting in Discourse's Chat plugin allows an authenticated user to inject arbitrary HTML and JavaScript into any viewer's browser session by embedding a malicious payload in the username field of a chat-transcript quote block. The Rich Text Editor rendered the username attribute via innerHTML without sanitization, meaning any authenticated Discourse member with chat access could craft a quote block that executes attacker-controlled script when a victim - potentially a moderator or administrator - views the transcript. Patch versions 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0 are confirmed released; no public exploit code or active exploitation (CISA KEV) has been identified at time of analysis.
RemediationAI
Upgrade to one of the patched Discourse releases: 2026.1.6, 2026.5.2, 2026.6.1, or 2026.7.0, as confirmed by the vendor advisory at https://github.com/discourse/discourse/security/advisories/GHSA-wg48-qxjc-f459 and the associated commits (32920affe4ad97b461ca2ae2f664c5fefc374baf, 3fb1e8ead0d4f48d2cf55c8110825c7e8a6a45f5, 7eb35d076ab9b6a612e86182336ce9787ce402ea, 9633b8ecaf5a99f0407f5261b9bd1a05f7dac529). If immediate patching is not possible, administrators can disable the Chat plugin entirely as a compensating control - this eliminates the vulnerable code path but removes all chat functionality from the platform. Restricting chat access to a minimal set of highly trusted users reduces the attacker pool but does not eliminate the vulnerability. There is no configuration toggle that preserves Chat functionality while blocking this specific injection path prior to patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 3 packages in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
Discourse is an open-source Ruby on Rails discussion platform with a ProseMirror-based Rich Text Editor. The flaw lives in plugins/chat/assets/javascripts/lib/rich-editor-extension.js, where the chat-transcript node renderer constructed DOM content using userElement.innerHTML = '<span ...>${node.attrs.username}</span>', inserting the unsanitized username attribute from a BBCode-style [chat quote] block directly into the DOM as HTML markup. CWE-79 (Improper Neutralization of Input During Web Page Generation - Stored XSS) describes this class precisely: user-supplied data flows into a sink that parses it as HTML rather than text. The fix, confirmed in commit 32920affe4ad97b461ca2ae2f664c5fefc374baf, replaces innerHTML assignment with individual document.createElement calls using textContent, ensuring the username is treated as a plain text node and never parsed by the HTML engine. The CPE cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:* covers all Discourse releases prior to the patched versions.
Know when Discourse gets its next vulnerability
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N
PR:L for authenticated-only injection; S:C and C:H/I:H reflect victim browser session takeover; A:N as no service disruption results.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Discourse is an open-source discussion platform. Prior to 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0, the Rich Text Editor rendered a chat-transcript username as HTML, allowing stored cross-site scripting. This issue is fixed in versions 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0.
Executive ViewAI
A stored cross-site scripting vulnerability in Discourse's Chat plugin enables authenticated users to inject malicious code that executes when other users-particularly administrators and moderators-view affected chat transcripts. No public exploit has been identified, but successful exploitation could result in administrative account compromise and unauthorized actions within your organization's primary communication platform.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.
Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun
discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is
Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and
Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem
Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the
In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated
Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio
Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi
Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r
Discourse versions prior to 3.4.4 (stable), 3.5.0.beta5 (beta), and 3.5.0.beta6-dev (tests-passed) contain a critical vu
Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is
Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8
EUVD-2026-55670
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB