Skip to main content

Discourse CVE-2026-91159

| EUVDEUVD-2026-101299 HIGH
Cross-site Scripting (XSS) (CWE-79)
2026-10-14 GitHub_M
7.7
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate with low-privilege posting account
  2. Delivery
    Host public page with allowlisted iframe plus overlay in oEmbed
  3. Exploit
    Post URL to trigger onebox/oEmbed fetch
  4. Execution
    Full fragment stored as trusted in post content
  5. Impact
    Spoofed 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.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

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

Alert me

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

discourse 2026.7.0-latest, < 2026.7.3
discourse 2026.8.0-latest, < 2026.8.1
discourse 2026.9.0-latest, < 2026.9.0
discourse < 2026.1.9

Affected Packages

euvd discourse fix: 2026.1.9, 2026.7.3, 2026.8.1, 2026.9.0

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

Vendor (GitHub_M) PRIMARY 7.7 HIGH
AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:N
vuln.today AI 5.0 MEDIUM

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.

3.1 AV:N/AC:L/PR:L/UI:N/S:C/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:L/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
Changed
Confidentiality
None
Integrity
High
Availability
None

Lifecycle Timeline

2
Patch available
Oct 14, 2026 - 17:18 EUVD
CVE Published
Oct 14, 2026 - 15:30 cve.org
HIGH 7.7

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

Why It Matters

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.

Business Impact: Medium
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 64% exploitable
Prevalence
High
leading open-source discussion/forum platform, very widely deployed
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 HIGH
CISA KEV No
Public POC No
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Medium

Priority Score

38
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +38
PoC: 0
Weaponized: 0
Threat intel: 0
Gov advisory: 0

Attack Technique

Cross-Site Scripting occurs when an application accepts untrusted data and sends it to a web browser without proper validation or encoding.

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