Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate to Discourse chat
-
DeliverySet channel/thread title with XSS payload
-
ExploitVictim quotes chat message in rich editor
-
ExecutionUnsanitized title rendered as innerHTML
-
ImpactExecute JavaScript in victim browser
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A06:2021 - Vulnerable and Outdated Components
ASVS 5.0
V14 - Configuration Dependency management, component inventory
MITRE ATT&CK
1 technique across 1 tactic: Initial Access The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | Requires the Discourse chat plugin to be enabled (and, for the thread-title variant, threading_enabled on the channel); the attacker needs an authenticated account able to set a chat channel name or create/name a chat thread, and must inject an HTML payload into that title. The victim must actively invoke the quote-message functionality in the rich text editor, which renders the attacker-controlled title via emojiUnescape without sanitization. Key limiting factor: the fix's regression tests disable Content Security Policy to make the payload fire, indicating that Discourse's default CSP likely blocks inline script execution and materially constrains real-world exploitation; affected only on versions 3.5.0 and below. |
| Impact | This is a medium-severity stored/DOM XSS (CVSS 5.4, CWE-80) whose signals consistently point to LOW real-world urgency rather than an active priority. EPSS is 0.03% (10th percentile), there is no CISA KEV listing, and no public exploit code was identified - only vendor-authored regression tests in the fix commit demonstrate the vector. The NVD vector (AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:L/A:N) lists PR:N, but this CONFLICTS with the actual mechanism: an attacker must be able to set a chat channel or thread title, which requires an authenticated account with chat access - so the realistic privilege requirement is PR:L, not PR:N (verify with vendor). Exploitation also requires victim interaction (UI:R) via the quote-message feature and the chat plugin being enabled. Notably, the fix's test suite explicitly disables Content Security Policy (SiteSetting.content_security_policy = false) to observe the payload firing, strongly implying Discourse's default CSP mitigates inline script execution in production - further reducing real risk. Net: a genuine but low-priority flaw best handled via routine patching to 3.5.1. |
| Exploit ScenarioDerived | An authenticated user with chat access sets a chat channel or thread title containing an HTML/JS payload (e.g. '<video src=_ onloadstart=confirm(document.domain)>'). When another user quotes a chat message containing that title into the rich text editor, the title is passed through emojiUnescape and rendered as raw innerHTML without sanitization, executing attacker-controlled JavaScript in the victim's browser. No public POC was identified, though the vendor's fix commit includes test cases that reproduce the vector. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv2 – Oct 19, 2026
Stored/DOM cross-site scripting in Discourse chat channel and thread titles lets an authenticated user who can name a channel or thread inject HTML that executes when another user quotes the chat transcript in the rich text editor. The flaw affects Discourse 3.5.0 and earlier with the chat plugin enabled, and the victim must actively use the quote-message feature; Discourse's default Content Security Policy likely blocks inline script execution, materially limiting real-world impact. It is fixed in Discourse 3.5.1, has a low EPSS score of 0.03%, and no public exploit was identified at time of analysis.
Earlier versions of this analysis (1)
RemediationAI
Vendor-released patch: upgrade Discourse to 3.5.1 or later; the fix is commit 3a224fd546d894ee408e7414b6879e814a792f91 and the advisory is at https://github.com/discourse/discourse/security/advisories/GHSA-7p47-8m82-m2vf. If immediate upgrade is not possible, disable the chat plugin to remove the vulnerable rich-editor extension entirely, at the cost of losing chat functionality, and for the thread-title path ensure channel threading is not enabled. Additionally, restrict creation and renaming of chat channels and threads to trusted staff, since the issue requires an authenticated account with those permissions. Keep Discourse's default Content Security Policy enabled rather than disabling it, as the regression tests had to turn CSP off to make the payload fire; CSP reduces but does not eliminate risk and is not a substitute for patching.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
CVE-2025-58054 is a CWE-80 improper neutralization of script-related HTML tags in Discourse's chat plugin. The rich text editor's quote/transcript extension applies the emojiUnescape helper to channel and thread title attributes and then assigns the result through innerHTML while building the chat transcript UI. Because emojiUnescape is intended for emoji substitution rather than full HTML sanitization, attacker-controlled markup in a chat channel name or thread title survives into the DOM. Exploitation requires an authenticated account able to create or rename a chat channel or thread, the chat plugin enabled, threading enabled for the thread-title path, and a victim who invokes quote-message in the rich text editor. The upstream fix replaces emojiUnescape with the replaceEmoji helper and adds regression tests that disable Content Security Policy to demonstrate script execution, indicating that Discourse's default CSP normally blocks inline script and constrains exploitation.
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:N/UI:R/S:U/C:L/I:L/A:N
Setting a chat channel/thread title requires an authenticated account (PR:L); victim must invoke the quote feature (UI:R); stored XSS yields limited browser-context C:L/I:L and no availability impact.
Primary rating from NVD.
CVSS VectorNVD
Lifecycle Timeline
4DescriptionNVD
Discourse is an open-source community discussion platform. Versions 3.5.0 and below are vulnerable to XSS attacks through parsing and rendering of chat channel titles and chat thread titles via the quote message functionality when using the rich text editor. This issue is fixed in version 3.5.1.
Executive ViewAI
CVE-2025-58054 is a low-severity vulnerability in Discourse (CVSS 3.5). The limited severity suggests constrained impact, typically requiring specific conditions or local access for exploitation. A patch is available and can be applied during standard maintenance windows.
Apply vendor patch during routine maintenance. Standard security controls provide adequate interim protection.
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-2025-33227
NVD
CVE.org
EPSS
GitHub
Exploit-DB