Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessObtain posting account on wildcard-configured site
-
DeliveryCraft iframe URL with allowlisted suffix after authority separator
-
ExploitPost content or trigger oEmbed request
-
ExecutionOrigin check matches text but browser parses attacker origin
-
ImpactAttacker-controlled iframe renders to viewers
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A07:2025 - Authentication Failures
ASVS 5.0
V6 - Authentication Origin validation
|
| Exploitation Conditions | Requires TWO concrete preconditions both stated in the advisory: (1) the site must have a WILDCARD pattern configured in the allowed_iframes setting - this is not the default, so instances without wildcard iframe entries are not exploitable; and (2) the attacker must hold posting privileges (PR:L) to create a post or trigger a Onebox oEmbed request for an attacker-controlled URL. The technical trigger is an iframe URL whose allowlisted suffix appears after a URL authority separator, causing the server wildcard origin check to match while the browser resolves a different attacker-controlled origin. Impact is limited to rendering an attacker-controlled iframe (integrity/content injection), with no confidentiality or availability impact per the CVSS vector. |
| Impact | This is a genuinely low-priority issue despite being a real bug. The provided CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N = 4.3 Medium) reflects an authenticated (PR:L) content-injection / origin-confusion flaw with only limited integrity impact (I:L) and no confidentiality or availability impact. No EPSS score, no CISA KEV listing, and no public exploit are present in the input, so exploitation status is 'no public exploit identified at time of analysis.' Crucially, exploitation is gated on a non-default precondition: the site must configure a WILDCARD pattern in the allowed_iframes setting - most Discourse instances do not, which sharply narrows the real-world exposed population below what the network vector alone suggests. The 'Information Disclosure' tag conflicts with the CVSS vector (C:N), which indicates this is a content/origin-integrity issue, not data disclosure - treat the tag as mislabeled. Overall: a valid defense-in-depth fix worth patching on normal cadence, not an emergency. |
| Exploit ScenarioDerived | On a Discourse forum that has enabled a wildcard entry in allowed_iframes, an attacker with an ordinary posting account crafts a post (or triggers a Onebox oEmbed lookup) containing an iframe URL whose allowlisted suffix is placed after a URL authority separator. The server-side wildcard origin check matches the allowed domain text, but browsers parse a different attacker-controlled origin, so an attacker-controlled iframe renders for viewers. No public exploit code is identified in the input, and the attack requires an authenticated posting account plus the non-default wildcard configuration. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Sep 24, 2026
Rendering of attacker-controlled iframes in Discourse is possible on sites that configure wildcard patterns in the allowed_iframes setting, allowing an authenticated user with posting privileges to embed an iframe whose origin is not actually allowlisted. The flaw is a bypass of the wildcard origin check: a crafted URL places the allowlisted suffix after a URL authority separator, so Discourse's text-based match succeeds while the browser resolves a different, attacker-controlled origin, and the iframe is then rendered through a post or a Onebox oEmbed response. Rated CVSS 4.3 (CWE-346, origin validation error) with only a low integrity impact and no confidentiality or availability impact; exploitation requires both a wildcard iframe configuration and posting privileges (PR:L), and no public exploit was identified at time of analysis.
RemediationAI
Upgrade Discourse to a fixed release: 2026.1.8, 2026.6.3, 2026.7.2, or 2026.8.0, matching your release track; these versions contain the corrected origin validation delivered via the referenced commits and PR https://github.com/discourse/discourse/pull/42882, and details are in the advisory https://github.com/discourse/discourse/security/advisories/GHSA-4q3q-hph3-3rvp. If immediate upgrade is not possible, the most direct compensating control is to remove wildcard entries from the allowed_iframes setting and restrict it to explicit, fully qualified origins, which eliminates the bypass path but reduces the flexibility of embedding third-party iframe content and may break legitimate embeds that depend on wildcard matching. As a secondary measure, reduce the population of accounts holding posting privileges, since exploitation requires the ability to create a post or trigger a Onebox oEmbed request; this lowers exposure but is a scoping control rather than a fix and does not address already-trusted posters. Note that patched iframe handling also validates encoded path-traversal segments in iframe src values, so any local URL-rewriting middleware or custom sanitizer overrides should be reviewed to ensure they do not reintroduce string-based origin checks that bypass canonical URL parsing.
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
The issue is a CWE-346 origin validation error that arises from the mismatch between Discourse's string-level wildcard matching of the allowed_iframes site setting and the browser's actual URL parsing rules. Discourse validates candidate iframe origins with wildcard patterns (for example, a pattern whose allowlisted suffix is compared as text), but URL syntax permits an authority separator (such as the userinfo '@' delimiter or similar separators preceding an authority) to appear before that suffix, so a URL like a crafted host followed by the allowlisted text can satisfy the text check while the browser navigates to the attacker's origin. Because the check is performed on the raw string rather than on a canonically parsed origin, the allowlisted suffix can be matched in a position that is not the actual origin of the resource; the accompanying sanitizer change also demonstrates tightening around path-traversal and encoded-segment forms in iframe src values. The underlying technology is the Discourse sanitizer/Onebox pipeline that decides which iframe markup survives cooking and which oEmbed URLs are fetched, and the vendor fix (delivered across the referenced commits and pull request) hardens this origin validation. The CVSS vector CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N confirms the attacker is authenticated (PR:L) with posting rights, and the impact is confined to content/integrity inside the rendered page.
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:U/C:N/I:L/A:N
Authenticated poster (PR:L) network-triggerable content injection with limited integrity impact and no confidentiality/availability; gated on non-default wildcard config but that is a deployment factor, not base AC.
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, sites using wildcard patterns in the allowed_iframes setting could accept a crafted iframe URL whose allowlisted suffix appeared after a URL authority separator. The wildcard origin check matched the allowed domain text, while browser URL parsing selected a different attacker-controlled origin. A user with posting privileges could exploit the flaw through a post or a Onebox oEmbed response and cause an attacker-controlled iframe to be rendered independently of the allowlisted domain. Successful exploitation requires a site-configured wildcard iframe pattern and the ability to create a post or trigger an oEmbed request for an attacker-controlled URL. This issue is fixed in versions 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0.
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
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-86303
NVD
CVE.org
EPSS
GitHub
Exploit-DB