Skip to main content

Discourse CVE-2026-72729

| EUVDEUVD-2026-55669 LOW
Cross-site Scripting (XSS) (CWE-79)
2026-08-10 GitHub_M
2.0
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Authenticate as low-privilege forum user
  2. Delivery
    Post content with crafted data-format/data-timezone HTML attribute
  3. Exploit
    Victim views post on CSP-disabled instance
  4. Execution
    Plugin interpolates attribute value as raw HTML
  5. Persist
    XSS payload executes in victim browser context
  6. Impact
    Session cookie or credential exfiltration

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 two concurrent conditions: first, the attacker must be an authenticated Discourse user (PR:L) with posting privileges, as the payload is embedded in post content via the discourse-local-dates span element attributes; second, the victim instance must have its default Content Security Policy modified or explicitly disabled - Discourse's default CSP prevents XSS payloads from executing, making this a non-default misconfiguration prerequisite. Additionally, a victim user must actively view (UI:A) the post containing the crafted date element. Sites running Discourse with the unmodified default CSP are not exploitable even on unpatched versions. Exploitation is limited to confidentiality and integrity at low impact (VC:L/VI:L) - no availability impact is assessed.

Impact

Real-world risk is constrained by multiple stacked requirements that reduce practical exploitability significantly below what the CWE alone might suggest. The CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:A/VC:L/VI:L/VA:N) encodes three key limiters: AT:P signals a specific prerequisite attack condition (CSP must be modified or disabled - this is non-default Discourse behavior), PR:L requires the attacker to be an authenticated forum user, and UI:A requires a victim to actively view the injected post. Discourse's default CSP would block most XSS payloads even if injection occurred, so the vulnerability only materializes on misconfigured instances. The resulting CVSS 4.0 score of 2.0 is consistent with this stacked-condition reality. No KEV listing, no standalone POC, and no EPSS data are available - there are no external exploitation signals elevating priority. This is a genuine low-severity defect worth patching in the normal update cycle but does not warrant emergency response unless the target instance is known to run with a weakened or disabled CSP.

Exploit ScenarioDerived

An authenticated Discourse forum member posts a message containing a local-date span element with a crafted data-format attribute embedding an HTML payload (e.g., data-format="[<img src=x onerror=alert(document.cookie)>]"). When another logged-in user visits the thread on an instance where the default CSP has been modified or disabled, the plugin's applyLocalDates function interpolates the attacker-controlled format string directly into the DOM as HTML, executing the payload in the victim's browser context. The vulnerability is confirmed exploitable via test cases in the fix commits that demonstrate data-format, data-timezone, and data-displayed-timezone as injection vectors.

Monitor Track and reassess. Why: LOW severity (CVSS 0.1-3.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 – Aug 10, 2026

Cross-site scripting in Discourse's discourse-local-dates plugin allows an authenticated attacker to inject arbitrary HTML by embedding crafted markup in local-date format attributes (data-format, data-displayed-timezone, data-timezone), which were interpolated directly into the DOM via template literals instead of safe DOM text APIs. Exploitation is gated by a non-default condition: the site's Content Security Policy must be modified or disabled from the default. No public exploit independent of the vendor fix commits exists at time of analysis, and this is not listed in CISA KEV. The CVSS 4.0 score of 2.0 reflects the constrained attack requirements (AT:P, PR:L, UI:A).

RemediationAI

Upgrade Discourse to one of the patched versions: 2026.1.6, 2026.5.2, 2026.6.1, or 2026.7.0, depending on the release branch in use. Patch commits are available at https://github.com/discourse/discourse/commit/9768f476ed86ea202440cd2b6245af8a4f94ec69, https://github.com/discourse/discourse/commit/981ba23d33d2e2d98f6690734116af58f2cea938, https://github.com/discourse/discourse/commit/a7e509bfa1aa6288b447503de6ef798c31a62751, and https://github.com/discourse/discourse/commit/d5d5055fbdf04d5bd72fcaa7e4257fac5adac049. As a compensating control for sites that cannot immediately update, ensure Discourse's default Content Security Policy is enabled and unmodified - this alone prevents the XSS payload from executing even in the presence of the injection. Disabling or weakening CSP is the activation condition for this vulnerability, so restoring the default CSP eliminates exploitability without requiring the plugin patch. No trade-offs exist in re-enabling the default CSP beyond possible breakage of custom third-party integrations that depend on relaxed CSP directives.

Affected VersionsENISA

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

Affected Packages

euvd discourse fix: 2026.1.6
euvd discourse_2026_5_0_latest fix: 2026.5.2
euvd discourse_2026_6_0_latest fix: 2026.6.1

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 3 packages in euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Discourse (cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*) is a Ruby on Rails/Ember.js open-source forum platform. The discourse-local-dates plugin processes span elements carrying data-date, data-time, data-format, data-timezone, and data-displayed-timezone HTML attributes, converting them to localized date representations. The vulnerable code path in plugins/discourse-local-dates/assets/javascripts/initializers/discourse-local-dates.js used JavaScript template literal string interpolation (${localDateBuilder.formatted}) to build inner HTML, meaning attacker-controlled values in those data attributes were rendered as raw HTML rather than escaped text. CWE-79 (Stored/Reflected XSS) is the root cause class - the plugin failed to distinguish between data and markup when inserting user-influenced content into the DOM. The fix replaces string interpolation with document.createElement() + textContent assignment, ensuring values are always treated as plain text regardless of content.

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 2.0 LOW
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:A/VC:L/VI:L/VA:N/SC:N/SI:N/SA:N
vuln.today AI 4.4 MEDIUM

AC:H reflects the non-default CSP-disabled prerequisite; PR:L for required authentication; UI:R for victim viewing; S:C because XSS crosses into victim browser context.

3.1 AV:N/AC:H/PR:L/UI:R/S:C/C:L/I:L/A:N
4.0 AV:N/AC:L/AT:P/PR:L/UI:A/VC:L/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
Attack Requirements
Present
Privileges Required
Low
User Interaction
Active
Vulnerable system: Confidentiality
Low
Vulnerable system: Integrity
Low
Vulnerable system: Availability
None
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: 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, 2026.5.2, 2026.6.1, and 2026.7.0, the discourse-local-dates plugin rendered crafted local-date format data as HTML on sites with a modified or disabled default Content Security Policy. This issue is fixed in versions 2026.1.6, 2026.5.2, 2026.6.1, and 2026.7.0.

Threat Intelligence Overview

EPSS Score
0.3%
Top 80% exploitable
Prevalence
Medium
popular open-source forum platform, not universal enterprise deployment
Data Quality
6 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 LOW
CISA KEV No
Public POC No
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
LOW severity (CVSS 0.1-3.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
Defer
Exploitation
None
System Exposure· derived
Open
Automatable
No
Human Impact· derived
Low
Technical Impact
Partial

Priority Score

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