Skip to main content

Discourse EUVDEUVD-2026-86303

| CVE-2026-91132 MEDIUM
Origin Validation Error (CWE-346)
2026-09-24 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Obtain posting account on wildcard-configured site
  2. Delivery
    Craft iframe URL with allowlisted suffix after authority separator
  3. Exploit
    Post content or trigger oEmbed request
  4. Execution
    Origin check matches text but browser parses attacker origin
  5. Impact
    Attacker-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.

This Month Plan within 30 days. Why: MEDIUM severity (CVSS 4.0-6.9).
Patch available 0.1% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – 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

discourse 2026.7.0-latest, < 2026.7.2
discourse < 2026.8.0
discourse 2026.1.0-latest, < 2026.1.8
discourse 2026.6.0-latest, < 2026.6.3

Affected Packages

euvd discourse fix: 2026.8.0
euvd discourse_2026_1_0_latest fix: 2026.1.8
euvd discourse_2026_6_0_latest fix: 2026.6.3
euvd discourse_2026_7_0_latest fix: 2026.7.2

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

Vendor (GitHub_M) PRIMARY 4.3 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
vuln.today AI 4.3 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:N/VC:N/VI:L/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

Lifecycle Timeline

2
Patch available
Sep 24, 2026 - 18:02 EUVD
CVE Published
Sep 24, 2026 - 16:57 cve.org
MEDIUM 4.3

DescriptionCVE.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

EPSS Score
0.1%
Top 98% exploitable
Prevalence
High
Discourse is a widely deployed open-source discussion/forum platform
Data Quality
5 sources
Confidence: Medium

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.

SignalValue
Severity MEDIUM
CISA KEV No
Public POC No
EPSS 0.1%
Patch available Yes
Active threat No
Deciding rule
MEDIUM severity (CVSS 4.0-6.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision· derived
Scheduled
Exploitation· derived
None
System Exposure· derived
Open
Automatable· derived
No
Human Impact· derived
High

Priority Score

22
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +22
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0
CVE-2025-48954 HIGH POC
8.1 Jun 25

Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun

CVE-2022-46162 CRITICAL POC
9.8 Nov 30

discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2026-27934 HIGH POC
8.7 Mar 19

Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and

CVE-2024-47773 HIGH POC
8.2 Oct 08

Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem

CVE-2026-26265 HIGH POC
7.5 Feb 26

Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the

CVE-2021-3138 HIGH POC
7.5 Jan 14

In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated

CVE-2026-26077 MEDIUM POC
6.5 Feb 26

Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio

CVE-2023-38706 MEDIUM POC
6.5 Sep 15

Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi

CVE-2024-53991 MEDIUM POC
5.9 Dec 19

Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r

CVE-2025-48877 CRITICAL
9.8 Jun 09

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

CVE-2023-47121 CRITICAL
9.8 Nov 10

Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is

CVE-2022-39355 CRITICAL
9.8 Oct 26

Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy