/

CVE-2026-91156

Severity:

HIGH RISK

(7.5)

Authorization Bypass (CWE-862) in Discourse Chat Channel

CVE-2026-91156

Deferred

Vulnerability type

Category:

Missing Authorization

CWE:

CWE-862

Impact:

Unauthorized Information Disclosure

Severity:

HIGH RISK

(7.5)

CVSS version:

3.1

Catch this CVE while code is being written

Detect vulnerable code directly in pull requests, so CVEs are fixed before merge.

Summary

Discourse could deliver messages from a read-restricted category chat channel to an authenticated user who could view the category but was not eligible to use Chat under the site's group restrictions. The exposure could reveal live or recent message content through MessageBus, although it does not provide full channel history access or the ability to create or modify messages.

Discourse could deliver messages from a read-restricted category chat channel to an authenticated user who could view the category but was not eligible to use Chat under the site's group restrictions. The exposure could reveal live or recent message content through MessageBus, although it does not provide full channel history access or the ability to create or modify messages.

Affected context

The issue occurs in Discourse deployments where Chat access is restricted by group membership while category visibility remains available to a broader set of authenticated users. The MessageBus publication path evaluated category visibility but could fail to apply the separate authorization rule governing eligibility to use the Chat channel.

The issue occurs in Discourse deployments where Chat access is restricted by group membership while category visibility remains available to a broader set of authenticated users. The MessageBus publication path evaluated category visibility but could fail to apply the separate authorization rule governing eligibility to use the Chat channel.

Exploit preconditions

  • Attack surface: Authenticated Discourse MessageBus and Chat delivery paths - Required access: An authenticated account able to view the relevant

category but excluded from Chat by site or group restrictions

  • Trigger point: Publication or retrieval of live and recently retained

channel events through MessageBus

  • Why exploitation is possible: Authorization checks are incomplete when

category visibility is used without also verifying Chat eligibility

  • Attack surface: Authenticated Discourse MessageBus and Chat delivery paths - Required access: An authenticated account able to view the relevant

category but excluded from Chat by site or group restrictions

  • Trigger point: Publication or retrieval of live and recently retained

channel events through MessageBus

  • Why exploitation is possible: Authorization checks are incomplete when

category visibility is used without also verifying Chat eligibility

Why this happens

The underlying bug is an incomplete authorization decision in the MessageBus audience calculation. The application treated permission to view a category as sufficient for receiving events, without consistently enforcing the independent permission required to use its Chat channel. This behavior maps to CWE-862, Missing Authorization, because a protected resource was exposed without applying all required access-control checks.

The underlying bug is an incomplete authorization decision in the MessageBus audience calculation. The application treated permission to view a category as sufficient for receiving events, without consistently enforcing the independent permission required to use its Chat channel. This behavior maps to CWE-862, Missing Authorization, because a protected resource was exposed without applying all required access-control checks.

Potential impact

  • An unauthorized authenticated user may receive live chat messages
  • Recent message content in the MessageBus backlog could be disclosed
  • Private discussions or sensitive operational information could be exposed
  • The issue could weaken trust in category and group-based access controls
  • Attackers cannot use this issue alone to create or modify messages
  • An unauthorized authenticated user may receive live chat messages
  • Recent message content in the MessageBus backlog could be disclosed
  • Private discussions or sensitive operational information could be exposed
  • The issue could weaken trust in category and group-based access controls
  • Attackers cannot use this issue alone to create or modify messages

General mitigation guidance

Mitigation generally focuses on making Chat eligibility a mandatory part of every message-publication authorization decision. Access checks should be centralized and consistently applied across live delivery, backlog replay, subscription, and API paths rather than inferred from category visibility. Systems should use deny-by-default authorization, minimize retained event data, avoid exposing protected content through secondary delivery channels, and apply least privilege to group and channel permissions. Authorization tests should cover users who can view a category but are not permitted to use its Chat channel.

Mitigation generally focuses on making Chat eligibility a mandatory part of every message-publication authorization decision. Access checks should be centralized and consistently applied across live delivery, backlog replay, subscription, and API paths rather than inferred from category visibility. Systems should use deny-by-default authorization, minimize retained event data, avoid exposing protected content through secondary delivery channels, and apply least privilege to group and channel permissions. Authorization tests should cover users who can view a category but are not permitted to use its Chat channel.

How teams detect issues like this

Detection can include static analysis and code review for audience-building logic that checks resource visibility without checking action or feature eligibility. Reviewers can trace authorization decisions across publication, subscription, backlog, and API flows, looking for inconsistent policy enforcement or client-supplied permission assumptions. Runtime monitoring can compare delivered channel events with effective group permissions, while automated tests and policy checks can exercise cross-product permission combinations.

Detection can include static analysis and code review for audience-building logic that checks resource visibility without checking action or feature eligibility. Reviewers can trace authorization decisions across publication, subscription, backlog, and API flows, looking for inconsistent policy enforcement or client-supplied permission assumptions. Runtime monitoring can compare delivered channel events with effective group permissions, while automated tests and policy checks can exercise cross-product permission combinations.

Sources

SourceLink
github.comgithub.com/discourse/discourse/commit/046fb7bfd68a5b95e63dda88c3c73877c5cf9d5e
github.comgithub.com/discourse/discourse/commit/87b31bf60a7827f075634254379a1dcbaba409cb
github.comgithub.com/discourse/discourse/commit/ba74bb404ab4439f5b1f0204e848d62099db8ae1
github.comgithub.com/discourse/discourse/commit/cac1f26f275cec3dc1dd51dfdac2b3d1a4ec50f8
github.comgithub.com/discourse/discourse/security/advisories/GHSA-gh4f-qr62-vx8q

Frequently asked

questions

An authenticated user generally needs permission to view the affected category

while lacking the group eligibility required to use Chat. The vulnerable

delivery path may then expose live or recently retained messages.

No. The issue concerns messages delivered through MessageBus, including live

and recent backlog content. It does not provide full channel-history access

through the Chat API.

No. The described authorization gap enables message disclosure, not message

creation or modification.

Enforce Chat eligibility independently of category visibility on every

publication, subscription, and backlog-delivery path, using centralized

deny-by-default authorization checks and tests for conflicting permissions.

An authenticated user generally needs permission to view the affected category

while lacking the group eligibility required to use Chat. The vulnerable

delivery path may then expose live or recently retained messages.

No. The issue concerns messages delivered through MessageBus, including live

and recent backlog content. It does not provide full channel-history access

through the Chat API.

No. The described authorization gap enables message disclosure, not message

creation or modification.

Enforce Chat eligibility independently of category visibility on every

publication, subscription, and backlog-delivery path, using centralized

deny-by-default authorization checks and tests for conflicting permissions.

Find out what's already
exploitable in your codebase.