CVE-2026-44782: Discourse User Name Exposure via GroupPostSerializer Bypass
Discourse, an open-source discussion platform, contains a logic error in how it handles user name visibility settings. Due to a misnamed predicate in the GroupPostSerializer component, user names are always included in API responses regardless of the site administrator's configuration to disable them. An authenticated user can exploit this to retrieve user name information that should be hidden, even when the 'enable_names' setting is turned off. The issue affects multiple version branches and has been patched.
Source data · NVD / CISA · public domain
- CVSS
- 3.1 · 4.3 MEDIUM · CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:L/I:N/A:N
- Weaknesses (CWE)
- CWE-200
- Affected products
- 2 configuration(s)
- Published / Modified
- 2026-06-12 / 2026-06-17
NVD description (verbatim)
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, GroupPostSerializer declared include_user_long_name? as the predicate for its :name attribute, but AMS looks for include_name?. The misnamed predicate was never called, so object.user.name was always serialized regardless of SiteSetting.enable_names. This issue has been patched in versions 2026.1.4, 2026.3.1, 2026.4.1, and 2026.5.0-latest.1.
1 reference(s) · View on NVD →
SEC.co analysis · AI-assisted, reviewed against source
Technical summary
The vulnerability stems from a mismatch between the actual predicate name and what the Active Model Serializers (AMS) library expects. GroupPostSerializer declared 'include_user_long_name?' as the predicate for the :name attribute serialization, but AMS searches for 'include_name?' by convention. Because the misnamed predicate was never invoked, the name field serialization always proceeded, bypassing the SiteSetting.enable_names configuration check entirely. This occurs in GroupPostSerializer specifically, affecting how group discussion posts expose user identity information in serialized output.
Business impact
Organizations running Discourse as an internal or external discussion platform may have configured user name anonymity to protect user privacy—whether for compliance, culture, or security reasons. This vulnerability undermines that control by always exposing user names via API responses to anyone with authentication credentials. For communities relying on pseudonymity, healthcare platforms, or other privacy-sensitive deployments, this represents an unauthorized information disclosure that contradicts published security settings and user expectations.
Affected systems
Discourse versions 2026.1.0 through 2026.1.3, 2026.3.0 through 2026.3.0, and 2026.4.0 through 2026.4.0 are vulnerable. Patched versions are 2026.1.4, 2026.3.1, 2026.4.1, and 2026.5.0-latest.1 and later. Any Discourse instance running in the affected version ranges with GroupPostSerializer in use is exposed.
Exploitability
Exploitation requires authentication (PR:L in CVSS terms), meaning an attacker must have valid user credentials. No special privileges or user interaction is needed beyond normal API access. An authenticated user can simply query group posts via standard API endpoints and retrieve user names in the response, even if the site administrator explicitly disabled the names feature. This is a straightforward information disclosure—no complex attack steps required.
Remediation
Upgrade immediately to one of the patched versions: 2026.1.4 or later for the 2026.1 branch, 2026.3.1 or later for the 2026.3 branch, 2026.4.1 or later for the 2026.4 branch, or 2026.5.0-latest.1 and later. Verify the patched versions against official Discourse release notes and changelogs. If immediate upgrades are not feasible, audit user access to group post APIs and review logs for unusual data exports or queries.
Patch guidance
Review your current Discourse version against the vulnerable ranges listed in the description. If running 2026.1.x, update to 2026.1.4 or later; if running 2026.3.x, update to 2026.3.1 or later; if running 2026.4.x, update to 2026.4.1 or later. Verify the patch through official Discourse channels, test in a staging environment to confirm the :name predicate now respects SiteSetting.enable_names, and then deploy to production. Restart or reload Discourse services after patching to ensure the updated serializer is active.
Detection guidance
Check your Discourse version number in the admin panel or via API. Compare against the affected ranges. If vulnerable, audit recent API responses from group posts to determine if user names have been exposed. Review access logs for user accounts that queried group post endpoints during the vulnerability window. If you have enabled SiteSetting.enable_names=false, any appearance of user names in API responses during that period indicates exposure. Consider a security review of any exported or cached API responses.
Why prioritize this
Although the CVSS score is moderate (4.3), this issue directly violates an explicit administrator security setting. Organizations that specifically disabled user names did so for documented business or privacy reasons; the fact that those settings are being ignored makes this high-priority from a compliance and trust perspective. The requirement for authentication limits broad exploitation, but any authenticated user—including low-privilege ones—can access the leaked data.
Risk score, explained
CVSS 3.1 score of 4.3 (MEDIUM) reflects attack vector network (AV:N, remotely exploitable), low attack complexity (AC:L, straightforward exploitation), low privileges required (PR:L, authentication needed), no user interaction (UI:N), and confidentiality impact (C:L) with no integrity or availability impact. The score appropriately captures that this is a focused information disclosure requiring prior authentication, without system-wide compromise potential. However, the business risk exceeds the technical severity because the leaked data directly contradicts administrator intent.
Frequently asked questions
Does this vulnerability allow an attacker to modify or delete user names or other data?
No. The vulnerability is read-only information disclosure. Attackers cannot modify, delete, or corrupt any data. The CVSS vector correctly reflects no integrity (I:N) or availability (A:N) impact.
If I have SiteSetting.enable_names disabled, are user names definitely exposed via the API?
In vulnerable versions, yes. GroupPostSerializer will always serialize the :name field regardless of the enable_names setting. Once patched, the corrected predicate will properly honor the administrator's configuration.
Can a guest or unauthenticated user exploit this?
No. The vulnerability requires authentication (PR:L). An attacker must have valid Discourse user credentials. Unauthenticated users cannot access the affected API endpoints.
What should I do if I suspect user names were exposed while my instance was vulnerable?
Review logs to identify who accessed group post APIs during the vulnerable period. If confidentiality is critical, consider notifying affected users about potential name exposure. Upgrade to a patched version immediately, and audit downstream systems that may have cached or stored the exposed API responses.
This analysis is based on the published CVE description and CVSS vector as of the modification date. Verify patch version numbers and availability directly against official Discourse release notes before applying updates. The timeline and scope of exposure depend on your instance's configuration and access logs. This advisory does not constitute legal or compliance advice; consult your legal and privacy teams regarding disclosure obligations. No exploit code or attack proofs are provided or endorsed. Source: NVD (public-domain), retrieved 2026-07-20. Analysis generated by SEC.co (claude-haiku-4-5).
Related vulnerabilities
- CVE-2026-44779MEDIUMDiscourse Bot Debug Endpoints Expose Whisper Translation Logs
- CVE-2026-44780MEDIUMDiscourse Email Information Disclosure via Category Moderation Queue
- CVE-2026-44784MEDIUMDiscourse SMTP Credential Exposure via Group History Logs
- CVE-2026-44785MEDIUMDiscourse AI Explain Feature Authorization Bypass
- CVE-2026-47263MEDIUMDiscourse Webhook Event Information Disclosure – Medium Severity
- CVE-2026-47264MEDIUMDiscourse Tag Group Name Disclosure Information Leak
- CVE-2026-44786HIGHDiscourse Chat Message Disclosure in MessageBus
- CVE-2026-10254MEDIUMUnauthenticated Information Disclosure in SourceCodester Pet Grooming Software