Skip to main content

Discourse CVE-2026-91156

| EUVDEUVD-2026-101300 HIGH
Missing Authorization (CWE-862)
2026-10-14 GitHub_M
7.5
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 member with category view rights
  2. Exploit
    Subscribe to category chat MessageBus channel
  3. Impact
    Receive live and recent restricted chat messages

Vulnerability Assessment

Weakness
CWE
OWASP Top 10:2025
A01:2025 - Broken Access Control
ASVS 5.0
V8 - Authorization Authorization checks on every request
MITRE ATT&CK

1 technique across 1 tactic: Privilege Escalation

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

Exploitation Conditions

Exploitable only when ALL of the following hold: the Discourse site has Chat enabled; a chat channel is backed by a read-restricted (private) category; the site uses group-based Chat restrictions (e.g. chat_allowed_groups) so that a user can be allowed to view the category while NOT being eligible to use Chat; and the attacker holds an authenticated account that can view that category but is excluded from the Chat-allowed groups. The flaw stems from the MessageBus audience being bounded by category visibility alone (chat/app/services/chat/publisher.rb) without also enforcing Chat eligibility. Limiting factors that reduce realistic risk: an authenticated account with category-view access is required (not anonymous), the category must be read-restricted, and disclosure is bounded to live and recent MessageBus backlog messages - full channel history via the Chat API and any message creation or modification are NOT possible.

Impact

This is a genuine but moderate confidentiality-only information-disclosure flaw, not a critical priority. The upstream CVSS vector (CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N, 7.5) is internally inconsistent with the description: it sets PR:N (unauthenticated) yet the description explicitly requires 'an authenticated user who could view the category' - so PR should realistically be PR:L, and the true score is lower than 7.5. CVSS also rates C:H, but the description bounds the impact (only live and recent MessageBus backlog content is exposed, not the channel's full history via the Chat API, and no message creation/modification is possible), which argues for a partial rather than total confidentiality loss. There is no EPSS score, no CISA KEV listing, and no public exploit code provided in the intelligence, so there is no public exploit identified at time of analysis. Exploitation also requires a specific non-default condition (read-restricted category chat channels combined with group-based Chat eligibility restrictions), further reducing real-world reach. Net: treat as a routine patch-soon issue for Discourse operators using restricted chat, not an emergency; the headline 7.5 overstates urgency given the authenticated prerequisite and bounded disclosure.

Exploit ScenarioDerived

A Discourse community restricts the Chat feature to certain groups while letting a broader set of authenticated members view a read-restricted category. A member who can see the category but is barred from Chat subscribes to the MessageBus channel and passively receives live and recent chat messages from that category's channel that they should not be able to read. No public exploit code is available, but the attack needs only normal authenticated access and low complexity (AC:L).

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.5% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Oct 14, 2026

Authenticated users on Discourse sites running the bundled Chat plugin can receive live and recent private-category channel messages they are not entitled to see, because the MessageBus publication audience for a read-restricted category channel is bounded by category visibility alone and never verifies Chat eligibility under the site's group restrictions (CWE-862 missing authorization). Only sites where chat is enabled, a chat channel is attached to a read-restricted category, and chat_allowed_groups are configured such that a user may view the category while being excluded from Chat are affected; exploitation requires a valid authenticated account with category-view access, which the assessed vector reflects (CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N). Disclosure is confined to messages flowing through the MessageBus stream and its short backlog - the Chat API does not expose full channel history, and no message creation or modification is possible - making this a moderate confidentiality-only issue with no public exploit identified at time of analysis.

RemediationAI

Vendor-released patch: upgrade to Discourse 2026.9.0, 2026.8.1, 2026.7.3 or 2026.1.9, which introduce the Chat.message_bus_group_ids_for audience logic that requires both category visibility and Chat eligibility before a subscriber receives channel events; if a full upgrade cannot be scheduled immediately, cherry-pick the fixes from commits 046fb7bfd68a5b95e63dda88c3c73877c5cf9d5e, 87b31bf60a7827f075634254379a1dcbaba409cb, ba74bb404ab4439f5b1f0204e848d62099db8ae1 and cac1f26f275cec3dc1dd51dfdac2b3d1a4ec50f8, noting that the plugin.rb hook and the engine.rb helper must land together or the audience hardening is incomplete. As a compensating control unpatched sites can disable the Chat plugin (SiteSetting chat_enabled = false), which fully closes the channel but removes all chat functionality site-wide, or, less disruptively, align chat_allowed_groups with the membership of any read-restricted category used by a chat channel so that no principal can view the category while being excluded from Chat - this preserves chat availability but must be re-verified after every group or category permission change, since any later divergence between category visibility and chat eligibility reopens the leak. Administrators should also confirm that restricted categories are not granted to broad pseudo-groups such as trust_level_0, since those grants widen the MessageBus audience even after patching. Advisory and patch details are at https://github.com/discourse/discourse/security/advisories/GHSA-gh4f-qr62-vx8q.

Affected VersionsENISA

discourse < 2026.1.9
discourse 2026.7.0-latest, < 2026.7.3
discourse 2026.9.0-latest, < 2026.9.0
discourse 2026.8.0-latest, < 2026.8.1

Affected Packages

euvd discourse fix: 2026.1.9, 2026.7.3, 2026.8.1, 2026.9.0

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

Discourse is a Ruby on Rails discussion platform whose Chat plugin publishes new and updated chat messages over MessageBus, a Redis-backed publish/subscribe bus that routes events to subscribers by computed audience identifiers (user_ids and group_ids) rather than by application-layer authorization checks. In plugins/chat/app/services/chat/publisher.rb, the code built the audience for a category-backed channel from category visibility group IDs only; it never intersected those with Chat.allowed_group_ids / chat_allowed_groups, so any principal that could see the underlying read-restricted category received the channel's MessageBus stream even when Chat itself was denied to them. The root cause is CWE-862 (Missing Authorization) in the audience-computation path. The upstream fix introduces Chat.message_bus_group_ids_for and Chat.restricted_category_message_bus_audience_id, which derive synthetic audience identifiers of the form "chat-restricted-category-group-<group_id>" from the channel's allowed_group_ids for read-restricted category channels, and hooks MessageBus.group_ids_lookup (in plugins/chat/plugin.rb) so that subscribers only match when they actually hold both the category-visibility group and Chat eligibility. CPE cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:* reflects that the issue affects the core product line rather than a separately distributed component; the flaw lies in MessageBus audience bounding rather than in any transport or cryptographic primitive.

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

Requires an authenticated low-privilege account that can view the category (PR:L), network-reachable with low complexity; disclosure is bounded to recent backlog so C:L, with no integrity or availability impact.

3.1 AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
4.0 AV:N/AC:L/AT:N/PR:L/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
None
Scope
Unchanged
Confidentiality
High
Integrity
None
Availability
None

Lifecycle Timeline

2
Patch available
Oct 14, 2026 - 17:18 EUVD
CVE Published
Oct 14, 2026 - 15:33 cve.org
HIGH 7.5

DescriptionCVE.org

Discourse is an open-source discussion platform. Prior to 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9, MessageBus audience calculation could deliver messages from a read-restricted category chat channel to an authenticated user who could view the category but was not allowed to use Chat under the site's group restrictions. The publication path bounded events by category visibility without also enforcing Chat eligibility, exposing live and recent message content available in the MessageBus backlog. The issue does not permit retrieval of the channel's full history through the Chat API and does not permit message creation or modification. This issue is fixed in versions 2026.9.0, 2026.8.1, 2026.7.3, and 2026.1.9.

Technical POC Analysis

The flaw is a missing-authorization bug (CWE-862) in Discourse's bundled Chat plugin, specifically in the code that computes the MessageBus audience for chat channel events.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Discourse sites with the bundled Chat plugin enabled can expose private-category channel discussions to authenticated users who lack chat entitlement, creating confidentiality and compliance exposure for organizations that rely on restricted chat for sensitive collaboration. Leadership should care because affected sites require a specific but plausible configuration-chat enabled, a channel attached to a read-restricted category, and group settings that let a user view the category while excluding them from Chat-and while the exposure is limited to live and recent MessageBus messages rather than full history, it can still reveal private business discussions to insiders or unauthorized accounts. No public exploit identified at time of analysis, and no vendor-released patch identified at time of analysis.

Business Impact: Medium
Compensating Controls

No vendor-released patch identified at time of analysis; interim mitigations include disabling the Chat plugin or removing chat channels from read-restricted categories, aligning chat_allowed_groups with category-view permissions so no user can view a category while being excluded from Chat, restricting category visibility to only users in chat_allowed_groups, monitoring MessageBus logs for anomalous message delivery, and applying the vendor patch when released.

Threat Intelligence Overview

EPSS Score
0.5%
Top 60% exploitable
Prevalence
Medium
Popular open-source forum platform, common for communities but not ubiquitous infrastructure
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 No
EPSS 0.5%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.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
Scheduled
Exploitation
None
System Exposure· derived
Open
Automatable
Yes
Human Impact
Medium
Technical Impact
Partial

Priority Score

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

Attack Technique

Authentication bypass attacks exploit flaws in the verification mechanisms that control access to systems and applications.

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