Skip to main content

Discourse EUVDEUVD-2026-55664

| CVE-2026-72725 MEDIUM
Cross-site Scripting (XSS) (CWE-79)
2026-08-10 GitHub_M
5.4
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 low-privileged Discourse user
  2. Delivery
    Submit HTML payload via loggable action (e.g., name change)
  3. Exploit
    Payload persisted in UserHistory new_value field
  4. Execution
    Staff member navigates to /admin/logs/staff_action_logs
  5. Persist
    Unescaped HTML renders in admin browser
  6. Impact
    Injected script executes in admin session context

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 an authenticated Discourse account (PR:L) with sufficient permissions to perform an action that generates a staff action log entry - for example, a user changing their display name via a change_name action, which is a default capability for regular users. The malicious value must be accepted as previous_value or new_value in the UserHistory model without prior sanitization at write time. A staff member must then actively visit the /admin/logs/staff_action_logs page (UI:R), at which point the stored payload executes. Exploitation is bounded by: the need for any valid Discourse account, the requirement for staff user interaction to trigger execution, and the admin-only visibility of the affected log view. Instances where user profile editing or other logged actions are restricted to trusted members have a significantly reduced attack surface.

Impact

The CVSS 5.4 score (AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N) accurately reflects the constrained exploitation path: a low-privileged authenticated user must be able to trigger a loggable action, and a staff member must subsequently view the action logs. The scope change (S:C) is significant - successful exploitation pivots from a user-context injection to admin browser session compromise, potentially exposing session tokens or enabling admin-level actions. No EPSS data, KEV listing, or POC availability was provided, so exploitation probability cannot be quantified beyond what CVSS signals. Real-world risk is moderate-to-elevated for Discourse instances where moderators or users perform frequently logged actions: the persistence of the payload means it is reliably triggered on routine admin review rather than requiring active attacker presence. The primary limiting factor is PR:L - exploitation is not possible without an account.

Exploit ScenarioDerived

An authenticated Discourse user changes their display name to an HTML payload such as <img src=x onerror="alert(document.cookie)">, triggering a UserHistory record with the malicious string stored as new_value. When an administrator next navigates to /admin/logs/staff_action_logs, the unescaped value renders as live HTML in the browser, executing the injected script within the admin's authenticated session context. The commit test case in admin_staff_action_logs_spec.rb demonstrates exactly this payload pattern, confirming exploitability.

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

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

Alert me

AnalysisAIv1 – Aug 10, 2026

Stored XSS in Discourse's staff action log interface allows authenticated users to inject malicious HTML into log entries that execute in administrator browser sessions. All Discourse releases prior to 2026.1.6 are affected, with the root cause being an unescaped rendering of previous_value and new_value fields in the admin frontend model. No active exploitation or public exploit code has been identified at time of analysis; vendor-released patches across four stable branches confirm the issue is fully remediated.

RemediationAI

Upgrade Discourse to a patched release: 2026.1.6, 2026.5.2, 2026.6.1, or 2026.7.0, as documented in the vendor advisory at https://github.com/discourse/discourse/security/advisories/GHSA-8x29-vv56-wj6v. The fix is implemented across commits 66601a6e, 74ae22d8, and fd44510b. As a compensating control before patching, restrict access to /admin/logs/staff_action_logs to the minimum set of highly trusted administrators, reducing the population of sessions that can trigger payload execution; note this does not prevent malicious content from being written into log records. Additionally, reviewing and enforcing strict Content Security Policy headers may limit the impact of injected scripts, though CSP bypass is not ruled out without further testing.

Affected VersionsENISA

discourse 2026.6.0, < 2026.6.1
discourse < 2026.1.6
discourse 2026.5.0, < 2026.5.2

Affected Packages

euvd discourse fix: 2026.1.6, 2026.5.2, 2026.6.1

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

The vulnerability exists in frontend/discourse/admin/models/staff-action-log.js, where the format() helper function was invoked with a third argument of false for both new_value and previous_value fields. This false argument explicitly disabled HTML escaping, causing the Ember/Handlebars rendering layer to treat user-supplied log field content as raw HTML rather than plain text. Per CWE-79, this is a stored XSS - the malicious payload persists in the UserHistory database record and is re-executed each time a staff member loads the /admin/logs/staff_action_logs view. The fix, confirmed across three commits, removes the false escape-disabling argument so the format() function applies its default HTML sanitization. The CPE cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:* covers all Discourse editions.

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

Stored XSS exploitable by any authenticated user (PR:L) targeting admin browser session (S:C, UI:R); no availability impact applies.

3.1 AV:N/AC:L/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:N/PR:L/UI:A/VC:L/VI:L/VA:N/SC:L/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
Required
Scope
Changed
Confidentiality
Low
Integrity
Low
Availability
None

Lifecycle Timeline

1
Patch available
Aug 10, 2026 - 17:03 EUVD

DescriptionCVE.org

Discourse is an open-source discussion platform. Prior to 2026.1.6, the staff action log model rendered unescaped previous and new value fields that could inject stored cross-site scripting into the staff interface. The issue is fixed in 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0.

Threat Intelligence Overview

EPSS Score
0.2%
Top 88% exploitable
Prevalence
Medium
popular open-source forum platform, broad community deployment
Data Quality
7 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GitHub VulDB

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.2%
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
Medium
Technical Impact
Partial

Priority Score

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