Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessAuthenticate with low-privilege posting account
-
DeliveryHost public page with allowlisted iframe plus overlay in oEmbed
-
ExploitPost URL to trigger onebox/oEmbed fetch
-
ExecutionFull fragment stored as trusted in post content
-
ImpactSpoofed overlay rendered to other forum users
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 | Exploitation requires all of the following concrete prerequisites: (1) an authenticated Discourse account with posting permission (PR:L); (2) attacker control of a public webpage that will be oneboxed and of that page's oEmbed response; and (3) an iframe whose src matches the site's configured iframe allowlist (allowed_iframe_regexes), e.g., a permitted provider such as a YouTube embed. The vulnerable path is Discourse's AllowlistedGenericOnebox oEmbed/onebox processing, which trusted the entire HTML fragment once any allowlisted iframe was present, allowing sibling <style>/<div> content to persist. Limiting factors that reduce realistic risk: a valid posting account is mandatory, the attacker must operate external web infrastructure, and the iframe source must match the specific allowlist; impact is confined to content integrity (stored overlays / misleading UI) - it does not expose restricted data, affect availability, or bypass Discourse's Content Security Policy. |
| Impact | The CVSS 3.1 base score of 7.7 (HIGH, vendor/GHSA-provided) overstates real-world urgency for most operators because the vector is integrity-only (C:N/A:N) and gated behind privileges and attacker infrastructure. Attack vector is network (AV:N) with low complexity (AC:L), but exploitation requires PR:L (an authenticated posting account), control of a public webpage and its oEmbed response, and an iframe source that matches the site's configured allowlist - a meaningful real-world barrier. No EPSS score, no CISA KEV listing, and no POC flag were provided in the intelligence; however, the fix is public (GHSA-f9jx-vv33-4282 plus four commits) and the patch includes a spec test that concretely demonstrates the sibling-HTML/overlay technique, so the method is effectively disclosed even though no weaponized exploit is reported. The scope change (S:C) is justified because stored malicious content renders for other users. Net: this is a content-integrity / UI-spoofing (clickjacking/phishing-style) issue, not RCE or data exposure - a legitimate fix-on-schedule item rather than an emergency, and lower-priority than the 7.7 implies for environments that restrict posting accounts. Note one signal conflict: the vector encodes I:H, but the described impact (misleading visual overlays, no data tampering) reads closer to I:L - treat the HIGH severity with that caveat. |
| Exploit ScenarioDerived | An attacker who holds a low-privilege posting account on a Discourse forum publishes a public webpage whose oEmbed response embeds an allowlisted iframe (e.g., a YouTube embed) alongside unrelated sibling markup such as a <style> block and a fixed-position <div> overlay. They post the page URL; Discourse's onebox processing fetches the oEmbed, treats the whole fragment as trusted because it contains the allowlisted iframe, and stores the overlay in the post. Other users then view a page with an attacker-controlled visual overlay enabling phishing or fraudulent UI. No weaponized exploit is reported, but the fix commit's spec test publicly demonstrates the technique. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 14, 2026
Stored visual overlay injection in Discourse before 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9 allows an authenticated user with posting permission to embed misleading or fraudulent UI content in posts by controlling a fetched webpage and its oEmbed response alongside an allowlisted iframe. The authoritative assessment rates this as limited integrity impact (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N) rather than the vendor/GHSA 7.7 high score, because exploitation requires a posting account, external attacker-controlled infrastructure, and an iframe source matching the site's configured allowlist; it does not expose restricted data, affect availability, or bypass Discourse CSP. No public exploit was identified at time of analysis, and vendor patches are available in 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.
RemediationAI
Upgrade to a vendor-fixed release: 2026.9.0, 2026.8.1, 2026.7.3, or 2026.1.9, as applicable to the site's release channel; see GHSA-f9jx-vv33-4282 and the referenced commits for the code-level fix. If immediate upgrade is not possible, reduce exposure by narrowing allowed_iframe_regexes to only the minimum trusted providers, disabling rich onebox/oEmbed embeds for untrusted domains, and requiring moderator approval for posts containing embeds; these controls have operational side effects such as breaking legitimate embeds and requiring extra moderation. After patching, review and clean existing posts for unexpected style/div overlays or misleading embeds, because the vulnerability stores content and patching prevents new persistence but may not retroactively remove already-cooked content. No public exploit was identified at time of analysis.
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
Discourse's onebox/oEmbed integration embeds remote rich content by fetching a public URL and parsing its oEmbed JSON/HTML into post content. In the AllowlistedGenericOnebox engine, the vulnerable logic validated only that an iframe's src matched the configured allowed_iframe_regexes, then treated the entire attacker-supplied oEmbed HTML fragment as trusted; sibling <style> and <div> elements could therefore survive sanitization and be stored as cooked post content. The commit diff shows the fix changed this to require all iframes in a fragment to match the allowlist and to return only iframe content unless the provider is a trusted HTML provider, preventing unrelated sibling HTML/CSS from being persisted. CWE-79 (improper neutralization of input during web page generation) applies because the flaw is an XSS-class stored client-side content injection, although the assessed impact is integrity-only and does not involve CSP bypass or restricted data access. Affected product CPE: cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*.
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:N/S:C/C:N/I:H/A:N
Authenticated posting account gives PR:L; stored fragment rendered to other users gives S:C; impact is UI spoofing not data tampering, so I:L with C:N/A:N.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
2DescriptionCVE.org
Discourse is an open-source discussion platform. Prior to 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9, oEmbed processing treated an entire attacker-controlled HTML fragment as trusted when the fragment contained an iframe whose source matched the configured allowlist. A user with posting permission who controlled a public webpage and its oEmbed response could combine an allowlisted iframe with unrelated sibling HTML or CSS, causing stored visual overlays or other styled content to appear in post content and enabling misleading or fraudulent user interfaces. Exploitation requires a posting account, control of the fetched webpage and oEmbed response, and an allowlisted iframe source. The issue affects content integrity but does not expose restricted data, disrupt availability, or require interaction with Discourse Content Security Policy. This issue is fixed in versions 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.
Technical POC Analysis
CWE-79 (per the CVE record; the GHSA itself lists no CWE).
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
Discourse, the community forum platform, contains a stored content-injection flaw that lets any user with posting rights disguise fraudulent or misleading interface elements inside normal-looking posts. Because the deception is delivered through trusted, allowlisted embed sources, readers and moderators may act on forged notices without realizing the content is attacker-controlled, eroding trust in the platform as an authoritative communications channel. The exposure is confined to content integrity rather than data theft or outage, and the authoritative assessment rates it below the vendor's headline score because a posting account and attacker-controlled external infrastructure are both required.
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-101299
NVD
CVE.org
EPSS
GitHub
Exploit-DB