Skip to main content

Discourse EUVDEUVD-2026-86306

| CVE-2026-91121 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-09-24 GitHub_M
5.0
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as upload-capable user
  2. Delivery
    Upload file with HTML markup in filename
  3. Exploit
    Send chat message referencing upload
  4. Execution
    Excerpt renderers output filename unescaped
  5. Impact
    Injected HTML alters other users' rendered views

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 Discourse account with privileges to (a) upload a file and (b) post chat content, so the Discourse Chat feature must be enabled on the site. The attacker embeds HTML markup in the uploaded file's filename, which is then rendered unescaped by chat excerpt surfaces (channel lists, chat summary emails, pinned message bars, reply previews, thread previews). Exploitation is LIMITED to trusted-HTML injection under the default Content Security Policy - JavaScript execution was not demonstrated; only sites that DISABLE or RELAX the default CSP have increased exposure to script-level attacks. No unauthenticated or user-interaction-free path exists.

Impact

This is a genuinely low-priority issue despite a moderate 5.0 CVSS. The vector (AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N) requires an authenticated user with upload-and-chat privileges, and the only rated impact is low integrity (I:L) - content/markup alteration of rendered excerpts, not code execution or data theft. Critically, the advisory itself states no confidentiality, integrity, or availability impact was identified, which conflicts with the structured scoring metadata that assigns I:L; this internal contradiction should be noted when triaging. No EPSS score is provided in the input, there is no CISA KEV listing, and no public exploit code was identified - so there is no evidence of active or automated exploitation. The most important limiter is that JavaScript execution was NOT demonstrated under Discourse's default Content Security Policy; exploitation is confined to trusted-HTML injection into excerpts, and only sites that disable or relax the default CSP face elevated (potential scripting) exposure. Net: a real but minor stored-content-injection bug, not a high-urgency threat.

Exploit ScenarioDerived

An authenticated user on a trust level permitting file uploads and chat crafts a file whose filename contains HTML markup, then sends chat content referencing it. The malicious filename is rendered unescaped in downstream excerpt surfaces (channel lists, chat summary emails, pinned message bars, reply/thread previews), altering what other users see; under default CSP this is limited to trusted-HTML injection with no demonstrated JavaScript execution. No public proof-of-concept was identified, and impact escalates only on sites running a disabled or relaxed CSP.

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

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

Alert me

AnalysisAIv1 – Sep 24, 2026

Trusted-HTML injection in Discourse chat excerpt renderers lets an authenticated user who can both upload files and post chat content embed HTML markup in a filename, which is then rendered unescaped in chat channel lists, chat summary emails, pinned message bars, reply previews, thread previews and other excerpt surfaces. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N, score 5.0) confirms the attacker must be authenticated and that only content integrity is affected, with scope change reflecting that the injected markup renders in contexts beyond the uploader's own message; no public exploit code has been identified at time of analysis and JavaScript execution was not demonstrated under the default Content Security Policy. The practical risk is low and is driven almost entirely by sites that have disabled or relaxed the default CSP, which the advisory notes have increased exposure to script-level attacks. Fixed versions are 2026.1.8, 2026.6.3, 2026.7.2 and 2026.8.0.

RemediationAI

Vendor-released patch: 2026.1.8, 2026.6.3, 2026.7.2 and 2026.8.0 - upgrade to the release matching your branch (stable sites to 2026.1.8 or later, beta/current sites to 2026.6.3, 2026.7.2 or 2026.8.0 as applicable), or cherry-pick the four upstream commits listed in the advisory. Full details are in the vendor advisory at https://github.com/discourse/discourse/security/advisories/GHSA-34rh-wjfv-65gq and the fixing pull request https://github.com/discourse/discourse/pull/42882. If an immediate upgrade is not possible, the highest-value compensating control is to preserve Discourse's default Content Security Policy unchanged - the advisory explicitly attributes elevated exposure to sites that disable or relax it, so any local CSP allowlist additions or inline-script relaxations should be reverted; the trade-off is that existing custom themes or integrations relying on relaxed CSP directives may break. Second, restrict the combination of privileges required for exploitation by limiting file-upload rights and chat posting to trusted groups (or disabling the Discourse Chat feature entirely on sites that do not use it), which removes the write primitive but degrades normal community functionality for the affected groups. Third, audit and prune chat summary email recipients and pinned-message content until patched, since email excerpts render outside the browser CSP sandbox and are the least defensible delivery surface. Note that no public exploit code has been identified at time of analysis and that the demonstrated impact is HTML injection rather than script execution under default CSP, so these measures should be prioritized below higher-risk items on the patch backlog.

Affected VersionsENISA

discourse 2026.1.0-latest, < 2026.1.8
discourse 2026.7.0-latest, < 2026.7.2
discourse < 2026.8.0
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 root cause is CWE-79 (Improper Neutralization of Input During Web Page Generation), specifically a context-confusion problem in Discourse's Ember/Handlebars frontend: an attacker-controlled upload filename was interpolated into excerpt strings that the client renders as trusted HTML rather than as escaped text. Because these excerpts are reused across multiple chat and activity surfaces (channel lists, summary emails, pinned bars, reply and thread previews), a single crafted filename propagates into many render paths. The 5.0 severity and the S:C scope shift reflect that payloads appear outside the originating message, though the default Discourse Content Security Policy blocks inline script execution, so demonstrated impact is limited to arbitrary trusted HTML that alters rendered excerpt content. Notably, the advisory body states no confidentiality, integrity or availability impact while its structured scoring metadata assigns low integrity impact; the independent assessment aligns with the structured metadata (I:L) and treats this as a low-priority hardening issue. The associated upstream pull request (42882) also hardens adjacent sinks in the same code path, including encoding mention actor names with encodeURIComponent before building href attributes, adding sanitize_sql_like to a URL lookup, and rejecting video placeholder sources containing attribute-breakout characters such as double quotes, indicating the maintainers treated the class of unsafe string-to-markup interpolation broadly rather than as a single-site fix.

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 5.0 MEDIUM
AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:L/A:N
vuln.today AI 5.0 MEDIUM

Authenticated upload/chat user (PR:L), no interaction needed to plant the payload, injected HTML alters excerpts shown to other users (S:C, I:L); no confidentiality or availability impact and no demonstrated JS under default CSP.

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
Low
Availability
None

Lifecycle Timeline

2
Patch available
Sep 24, 2026 - 18:02 EUVD
CVE Published
Sep 24, 2026 - 17:05 cve.org
MEDIUM 5.0

DescriptionCVE.org

Discourse is an open-source discussion platform. Prior to 2026.1.8, 2026.6.3, 2026.7.2, and 2026.8.0, attacker-controlled upload filenames used in chat message excerpts were rendered as unescaped HTML. A user able to upload a file and send chat content could place markup in a filename that was then interpreted by chat channel lists, chat summary emails, pinned message bars, reply previews, thread previews, and other excerpt renderers. The issue allowed trusted-HTML injection that altered rendered excerpt content, but JavaScript execution was not demonstrated with default Content Security Policy settings. The advisory states that no confidentiality, integrity, or availability impact was identified, while its structured scoring metadata separately assigns low integrity impact. Sites that disable or relax the default CSP have increased exposure. 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.3%
Top 84% 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.3%
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
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
High
Technical Impact
Partial

Priority Score

25
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +25
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