Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticated trust-level user posts content
-
DeliveryEmbed video placeholder with attribute-breakout data-video-src
-
ExploitStore crafted onerror handler in post
-
ExecutionVictim opens post and clicks play overlay
-
PersistHandler executes JavaScript in viewer session
-
ImpactRead page content and make authenticated requests as viewer
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 | Requires an authenticated account with default trust-level posting privileges to store the crafted video-placeholder payload. Script execution additionally requires the target Discourse instance to have its Content Security Policy DISABLED or RELAXED - under the default CSP, inline event handlers are blocked and the attack fails to execute. It also requires victim interaction: another user must open the malicious post and click the video play overlay to trigger the injected handler. These three gates (authentication, non-default CSP, and specific victim UI interaction) meaningfully limit realistic exploitation versus the 8.7 base score. |
| Impact | This is a stored XSS (CWE-79) in Discourse's video-placeholder component. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:R/S:C/C:H/I:H/A:N, 8.7) reflects network reach, low-privilege posting access, and a scope change into the viewer's session, but the score materially overstates real-world risk because it does not weight the single most important limiting factor stated in the description: the default Content Security Policy blocks inline event handlers, so the injected handler does NOT execute on a default-configured instance. Exploitation therefore requires the victim instance to have CSP disabled or relaxed - a non-default hardening regression - plus multi-step victim interaction (open the post AND click the play overlay, UI:R). Given that, AC:L is optimistic and AC:H is more defensible, and C:H/I:H is high for a stored-XSS whose realistic impact is reading page content and issuing authenticated requests as the viewer (C:L/I:L is the conventional call). Exploitation signals are weak: no CISA KEV listing, no EPSS score provided, and no public exploit identified at time of analysis. Net: a legitimate patch-worthy flaw for CSP-relaxed instances, but not an urgent widespread-exploitation priority; default-CSP deployments are not exposed to script execution. |
| Exploit ScenarioDerived | An authenticated user with ordinary trust-level posting rights on a Discourse forum whose CSP has been disabled or relaxed crafts a post containing a video placeholder with a malformed data-video-src that breaks out of the attribute and adds an onerror handler. When a moderator or admin later opens that post and clicks the video play overlay, the handler runs arbitrary JavaScript in their session, reading page content and issuing authenticated requests as the victim. No public exploit code is known, though the fix commit and its regression test disclose the exact breakout payload pattern. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 24, 2026
Stored cross-site scripting in Discourse's video-placeholder component lets an authenticated user with default trust-level posting privileges embed a crafted video URL in a post that breaks out of the placeholder's data-video-src attribute and injects an attacker-controlled event handler, which fires when another user opens the post and clicks the video play overlay. Exploitation is gated by three independent conditions - a valid posting account (CVSS PR:L, so authenticated), the target instance running with its Content Security Policy disabled or relaxed (the default CSP blocks inline event handlers and defeats the attack), and specific victim interaction (UI:R) - so realistic risk is materially lower than the 8.7 base score implies; our assessment rates it AC:H with only low confidentiality and integrity impact. No public exploit code and no confirmed active exploitation (no CISA KEV listing) were identified at time of analysis, and the vendor has released fixed versions 2026.1.8, 2026.6.3, 2026.7.2 and 2026.8.0.
RemediationAI
Vendor-released patch: upgrade to 2026.1.8, 2026.6.3, 2026.7.2 or 2026.8.0 - choose the release matching your installed branch (for example, a 2026.1.x instance must reach 2026.1.8, a 2026.7.x instance must reach 2026.7.2), and track the advisory at https://github.com/discourse/discourse/security/advisories/GHSA-8m44-f6g9-7cg7. Because the fixed code simply rejects any video URL whose sanitized value still contains a double quote and renders an error notice, there is no configuration toggle that fully substitutes for patching. Compensating controls, in order of effectiveness: keep the default Content Security Policy enabled and do not relax it to permit unsafe-inline or inline event handlers, since the default CSP is precisely what blocks this payload from executing - the trade-off is that sites with custom themes or plugins that require relaxed CSP must either rewrite them or accept this residual risk; if patching must be deferred, restrict posting rights so that only fully trusted groups can create posts containing video placeholders (raising the barrier from the default trust level, at the cost of limiting normal community posting), and enable post moderation or staff review for new accounts so the stored payload never reaches a victim's browser. Applying only the CSP control is a mitigation, not a fix, and does not remove the stored payload from the database.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 4 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 a Ruby-on-Rails plus Ember.js discussion platform, and this flaw is a classic CWE-79 stored XSS caused by improper neutralization of user input during HTML generation. The frontend instance initializer that renders video placeholders (frontend/discourse/app/instance-initializers/video-placeholder.js) builds a video element from a post-supplied URL after only checking that the sanitized value does not contain the HTML entity '<'; it did not reject a literal double-quote character. An attacker-supplied URL containing a '"' therefore terminated the data-video-src attribute early and allowed arbitrary attribute injection, such as an onerror event handler, into the generated markup. The upstream fix (PR 42882, commits 05d92b87, 5674b3e6, c3993e31 and d7126af3) extends the validation to reject sanitized values containing double quotes and simply renders an error notice for invalid video URLs instead of a video element. Discourse's default Content Security Policy normally blocks inline event handlers, which is why the issue is only exploitable on instances where CSP has been disabled or relaxed; published tests confirm that no event-handler attribute and no video element are created for a breakout payload once patched. The same pull request bundles related hardening - encoding actor names in mention hrefs (userPath(encodeURIComponent(...))), switching a URL lookup to sanitize_sql_like to stop LIKE-wildcard injection, and rejecting iframe sources containing URL-encoded path traversal segments.
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
AC:H because script execution requires the non-default CSP-disabled/relaxed configuration plus victim overlay click; PR:L for authenticated posting; C:L/I:L for typical stored-XSS session impact; S:C as it crosses into the viewer's context.
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.8, 2026.6.3, 2026.7.2, and 2026.8.0, the video placeholder component allowed crafted HTML to cause an attribute breakout and inject an attacker-controlled event handler. An authenticated user with default trust-level posting privileges could store the crafted placeholder in a post. When another user opened the post and clicked the video play overlay, the handler could execute arbitrary JavaScript in the viewer's session. Default Content Security Policy settings block inline event handlers, but instances with CSP disabled or relaxed could allow the script to read page content and make authenticated requests as the viewer. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.
Technical POC Analysis
Bug class: stored cross-site scripting, CWE-79 (improper neutralization of input during web page generation).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Discourse's video-placeholder component contains a stored cross-site scripting vulnerability that requires an authenticated attacker with posting privileges, a target instance with relaxed Content Security Policy, and victim interaction to exploit. No public exploit identified at time of analysis, and while the base CVSS is 8.7, the realistic organizational risk is lower due to these multiple conditions. However, successful exploitation could compromise user sessions and damage trust in the community platform, so leadership should prioritize ensuring CSP is enforced and monitor for vendor patches.
Enforce strict Content Security Policy (CSP) as configured by default; restrict posting privileges to trusted users; monitor for anomalous video embeds. No vendor-released patch identified at time of analysis.
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-86302
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB