Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessIdentify Discourse instance with tags endpoint accessible
-
DeliveryConfirm tags_listed_by_group is enabled via response structure
-
ExploitSend unauthenticated GET to TagsController#info
-
ExecutionParse unfiltered tag group names from response
-
ImpactEnumerate restricted group and category names
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 | Exploitation requires that the Discourse instance has SiteSetting.tags_listed_by_group explicitly enabled in its site configuration - this is a non-default administrative option that must be turned on intentionally. The TagsController#info endpoint is exempt from the requires_login filter by default, so no authentication bypass is needed; the endpoint is legitimately public. No special network position, credentials, or client-side interaction is required once these conditions are met. What limits exploitation: only tag group names are exposed (not post content, private messages, user emails, or credentials); the attack is passive read-only with no integrity or availability impact; and instances with tags_listed_by_group disabled are entirely unaffected. The vulnerability does not affect Discourse instances where tag group visibility restrictions are irrelevant (e.g., fully public communities with no restricted groups). |
| Impact | The CVSS 3.1 base score of 5.3 (Medium) with vector AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N accurately reflects network reachability and zero authentication requirements, but the real-world risk is substantially lower than the CVSS score might imply in isolation. The EPSS score of 0.04% at the 11th percentile confirms negligible observed exploitation interest, the vulnerability is not listed in the CISA KEV catalog, and no public exploit code has been identified. Critically, the impact is constrained to disclosure of tag group names - metadata about forum organization - not message content, credentials, private posts, or user data. The practical damage is limited to revealing the existence and names of private user groups or restricted categories, which represents an information leakage that could aid a determined adversary in social engineering or targeted reconnaissance against the forum community. The mandatory prerequisite of SiteSetting.tags_listed_by_group being enabled further scopes the population of vulnerable instances. Overall, this is a low-urgency remediation unless the Discourse instance hosts sensitive community structures whose existence itself is confidential. |
| Exploit ScenarioDerived | An unauthenticated attacker sends an HTTP GET request to the /tags/[tagname] or equivalent TagsController#info endpoint of a Discourse instance where tags_listed_by_group is enabled, and receives a JSON response containing tag group names that the administrator intended to restrict to privileged user groups. By iterating over known or guessed tag names, the attacker builds a map of restricted category and group names - for example, confirming the existence of a 'staff-only' or 'security-team' group - without ever authenticating. No public proof-of-concept code has been identified, but the attack requires only standard HTTP tooling and knowledge of the endpoint. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Jun 12, 2026
Tag group name disclosure in Discourse exposes restricted organizational metadata to anonymous and unprivileged users via a serializer that omits visibility filtering. Affected release lines are 2026.1.x (before 2026.1.4), 2026.3.x (before 2026.3.1), and 2026.4.x (before 2026.4.1), with the root cause being that DetailedTagSerializer#tag_group_names returned all group memberships without consulting the requesting user's permissions. An unauthenticated attacker can enumerate the names of tag groups restricted to specific user groups or non-visible categories, potentially leaking the internal structure of private forum spaces; no public exploit code has been identified at time of analysis and EPSS is 0.04% (11th percentile), indicating negligible observed exploitation activity.
RemediationAI
The primary remediation is to upgrade Discourse to a patched release: 2026.1.4 for the 2026.1.x branch, 2026.3.1 for the 2026.3.x branch, 2026.4.1 for the 2026.4.x branch, or 2026.5.0-latest.1 for the latest stable channel. Full advisory details are at https://github.com/discourse/discourse/security/advisories/GHSA-4q5q-6hh6-53x2. As an interim compensating control for operators unable to patch immediately, disabling the SiteSetting.tags_listed_by_group configuration option in the Discourse admin panel eliminates the vulnerable code path entirely, since the serializer's tag group enumeration is only triggered when this feature is active; the trade-off is loss of the grouped tag browsing UI for all users. There is no known network-layer workaround (e.g., blocking a specific endpoint) that would fully mitigate the issue without impacting legitimate tag-browsing functionality, since the TagsController#info endpoint serves other purposes.
Affected VersionsENISA
Affected Packages
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 is a Ruby on Rails-based discussion platform (CPE: cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*). The vulnerability resides in the DetailedTagSerializer class, whose #tag_group_names method aggregated all tag group associations for a given tag without applying the visibility rules that govern which groups the requesting user is permitted to see. The TagsController#info action, which invokes this serializer, is explicitly exempt from the requires_login filter, meaning it is accessible to anonymous HTTP clients by default. When the SiteSetting.tags_listed_by_group feature flag is enabled, the serialized response includes tag group names that administrators have restricted to specific user groups or linked to non-visible categories. The root cause maps to CWE-200 (Exposure of Sensitive Information to an Unauthorized Actor): authorization logic was enforced at the controller layer but not propagated through to the serializer layer, creating a classic broken object-level authorization gap.
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
AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N
Endpoint is network-accessible without authentication (AV:N/PR:N), attack is straightforward once the site setting is enabled (AC:L), and impact is limited to disclosure of tag group names only (C:L/I:N/A:N).
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
Lifecycle Timeline
1DescriptionCVE.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, DetailedTagSerializer#tag_group_names returned every tag group a tag belonged to without filtering against the requesting user's visibility. With SiteSetting.tags_listed_by_group enabled, anonymous and unprivileged users hitting TagsController#info (which is exempt from requires_login) could read the names of tag groups restricted to specific user groups or non-visible categories. 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
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Information disclosure occurs when an application unintentionally exposes sensitive data that aids attackers in reconnaissance or directly compromises security.
Discourse versions prior to 3.5.0.beta6 contain a reflected cross-site scripting (XSS) vulnerability in social login fun
discourse-bbcode is the official BBCode plugin for Discourse. Rated critical severity (CVSS 9.8), this vulnerability is
Unauthorized information disclosure in Discourse discussion platform versions prior to 2026.3.0-latest.1, 2026.2.1, and
Discourse is an open source platform for community discussion. Rated high severity (CVSS 8.2), this vulnerability is rem
Discourse versions prior to 2025.12.2, 2026.1.1, and 2026.2.0 contain an insecure direct object reference (IDOR) in the
In Discourse 2.7.0 through beta1, a rate-limit bypass leads to a bypass of the 2FA requirement for certain forms. Rated
Unauthenticated attackers can submit forged webhook payloads to multiple email provider integrations in Discourse versio
Discourse is an open-source discussion platform. Rated medium severity (CVSS 6.5), this vulnerability is remotely exploi
Discourse is an open source platform for community discussion. Rated medium severity (CVSS 5.9), this vulnerability is r
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
Discourse is an open source platform for community discussion. Rated critical severity (CVSS 9.8), this vulnerability is
Discourse Patreon enables syncronization between Discourse Groups and Patreon rewards. Rated critical severity (CVSS 9.8
EUVD-2026-36561
NVD
CVE.org
EPSS
Vulnrichment
GitHub
VulDB
Exploit-DB