Skip to main content

Discourse EUVDEUVD-2026-36560

| CVE-2026-47263 MEDIUM
Information Exposure (CWE-200)
2026-06-12 GitHub_M
4.3
CVSS 3.1 · Vendor: GitHub_M
View

Attack ChainAIDerived

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

  1. Access
    Access Discourse instance (authenticated or anonymous)
  2. Delivery
    Discover or guess sequential webhook event IDs
  3. Exploit
    Subscribe to /web_hook_events/<id> MessageBus channel
  4. Execution
    Receive unrestricted webhook event payload
  5. Impact
    Enumerate additional IDs to harvest full webhook history

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V14 - Data Protection Data exposure prevention
MITRE ATT&CK

2 techniques across 2 tactics: Collection, Discovery

The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up.

Exploitation Conditions

On Discourse instances where login_required is disabled (the default for many public communities): no authentication is required - anonymous users can subscribe to any /web_hook_events/<id> channel. On instances where login_required is enabled: any authenticated user account, regardless of role or group membership, can access all webhook event channels. The core enabling condition is the absence of group_ids enforcement in the MessageBus.publish call within Jobs::RedeliverWebHookEvents - this is a code-level omission present in all affected versions regardless of other configuration. Exploitation is further limited by requiring that webhook redelivery jobs have actually run (i.e., the feature must be in use), and the confidentiality impact depends entirely on what data the site's configured webhooks carry in their payloads.

Impact

The vendor-assigned CVSS score of 4.3 (Medium) uses AV:N/AC:L/PR:N/UI:R/S:U/C:L/I:N/A:N. The PR:N rating reflects that unauthenticated access is possible when login_required is disabled, while UI:R is inconsistent with the described attack - direct MessageBus channel subscription requires no victim interaction, suggesting the UI:R metric may underrepresent real-world exploitability on public instances. EPSS of 0.03% at the 9th percentile and the absence of a CISA KEV listing collectively indicate low probability of widespread automated exploitation currently. Real-world risk is moderate to sensitive Discourse deployments that use webhooks for internal integrations (CI/CD callbacks, CRM events, payment notifications) where payload content is confidential. Instances with login_required enabled narrow the attacker pool to authenticated members, substantially reducing exposure. This is not a high-urgency emergency patch but represents a meaningful access-control bypass warranting prompt remediation given the trivial enumeration path.

Exploit ScenarioDerived

An attacker - authenticated or anonymous depending on instance configuration - subscribes to the Discourse MessageBus channel /web_hook_events/1, /web_hook_events/2, and so on, iterating sequential integer IDs to retrieve webhook event payloads. Because webhook IDs are sequential integers with no per-channel authorization check, the attacker harvests event data (potentially including integration tokens, payload bodies, or system event details) across all redelivered webhook events without any elevated privileges. No exploit code has been publicly identified, but the attack requires no technical sophistication beyond basic HTTP knowledge.

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

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

Alert me

AnalysisAIv1 – Jun 12, 2026

Unauthorized access to webhook event data in Discourse exposes internal webhook payloads to any authenticated user - or unauthenticated users on instances with login_required disabled - across versions 2026.1.0 through several branch heads. The flaw resides in the MessageBus channel /web_hook_events/<id>, which the Jobs::RedeliverWebHookEvents job publishes to without enforcing group_id restrictions, allowing unrestricted channel subscription. Compounded by trivially enumerable sequential integer webhook IDs, any low-privilege or anonymous actor can iterate over webhook event history without authorization. No public exploit code exists and EPSS is 0.03% (9th percentile), indicating no observed widespread exploitation at time of analysis.

RemediationAI

Vendor-released patches are confirmed in versions 2026.1.4, 2026.3.1, 2026.4.1, and 2026.5.0-latest.1 - upgrade to the appropriate patched release for your branch. Full details are available in the vendor advisory at https://github.com/discourse/discourse/security/advisories/GHSA-wvrm-9v64-m96p. If immediate upgrade is not possible, enabling login_required (Site Settings → login_required) eliminates the anonymous-access vector, restricting the channel to authenticated users only - note this changes the site's public accessibility posture. As a deeper compensating control, restrict the network perimeter so that the Discourse MessageBus endpoint is not reachable by untrusted networks; however, this is impractical for publicly hosted communities. There is no known workaround that preserves webhook redelivery functionality while fully blocking the unauthorized channel subscription without patching.

Affected VersionsENISA

discourse 2026.4.0-latest, < 2026.4.1
discourse 2026.3.0-latest, < 2026.3.1
discourse 2026.1.0-latest, < 2026.1.4

Affected Packages

euvd discourse_2026_1_0_latest fix: 2026.1.4
euvd discourse_2026_3_0_latest fix: 2026.3.1
euvd discourse_2026_4_0_latest fix: 2026.4.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 uses MessageBus, an in-process pub/sub messaging layer, to push real-time updates to browser clients. When Jobs::RedeliverWebHookEvents publishes to the /web_hook_events/<id> channel, it omits the group_ids parameter that normally gates channel visibility to specific user groups. Without this restriction, MessageBus defaults to open broadcast. The affected CPE is cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:* across the identified version ranges. The root cause maps to CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor) - a missing access-control enforcement at the messaging layer rather than at the HTTP routing layer. The sequential-integer nature of webhook IDs compounds the issue, reducing any practical obscurity and enabling IDOR-style enumeration without brute-force complexity.

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

Network-accessible with no complexity, no privileges, and no user interaction needed; confidentiality impact is low and integrity/availability are unaffected.

3.1 AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:N/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

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

Lifecycle Timeline

1
Patch available
Jun 12, 2026 - 22:01 EUVD

DescriptionCVE.org

Discourse is an open-source discussion platform. From versions 2026.1.0-latest to before 2026.1.4, 2026.3.0-latest to before 2026.3.1, and 2026.4.0-latest to before 2026.4.1, the MessageBus.publish call for /web_hook_events/<id> in Jobs::RedeliverWebHookEvents did not pass group_ids, leaving the channel readable by any authenticated user (or anonymous user on instances where login_required is disabled). Webhook IDs are sequential integers and trivially enumerable. This issue has been patched in versions 2026.1.4, 2026.3.1, 2026.4.1, and 2026.5.0-latest.1.

Threat Intelligence Overview

EPSS Score
0.0%
Top 91% exploitable
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.0%
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

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

Attack Technique

Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.

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