CVE-2026-31869

Source
https://cve.org/CVERecord?id=CVE-2026-31869
Import Source
https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31869.json
JSON Data
https://api.osv.dev/v1/vulns/CVE-2026-31869
Aliases
Published
2026-03-20T03:10:43.213Z
Modified
2026-04-10T05:42:11.868199Z
Severity
  • 5.3 (Medium) CVSS_V4 - CVSS:4.0/AV:N/AC:L/AT:N/PR:L/UI:N/VC:L/VI:N/VA:N/SC:N/SI:N/SA:N CVSS Calculator
Summary
Discourse: Composer mentions endpoint leaks hidden group membership through PM `allowed_names` check
Details

Discourse is an open-source discussion platform. Prior to versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2, the ComposerController#mentions endpoint reveals hidden group membership to any authenticated user who can message the group. By supplying allowednames referencing a hidden-membership group and probing arbitrary usernames, an attacker can infer membership based on whether userreasons returns "private" for a given user. This bypasses group member-visibility controls. Versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2 contain a patch. To work around this issue, restrict the messageable policy of any hidden-membership group to staff or group members only, so untrusted users cannot reach the vulnerable code path.

Database specific
{
    "cna_assigner": "GitHub_M",
    "cwe_ids": [
        "CWE-200",
        "CWE-285",
        "CWE-639"
    ],
    "osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/31xxx/CVE-2026-31869.json"
}
References

Affected packages

Git / github.com/discourse/discourse

Affected ranges

Type
GIT
Repo
https://github.com/discourse/discourse
Events
Database specific
{
    "versions": [
        {
            "introduced": "2026.1.0-latest"
        },
        {
            "fixed": "2026.1.2"
        }
    ]
}
Type
GIT
Repo
https://github.com/discourse/discourse
Events
Database specific
{
    "versions": [
        {
            "introduced": "2026.2.0-latest"
        },
        {
            "fixed": "2026.2.1"
        }
    ]
}
Type
GIT
Repo
https://github.com/discourse/discourse
Events
Introduced
0 Unknown introduced commit / All previous commits are affected
Last affected
Database specific
{
    "versions": [
        {
            "introduced": "0"
        },
        {
            "last_affected": "= 2026.3.0-latest"
        }
    ]
}

Affected versions

Other
esr
stable
v0.*
v0.8.0
v0.8.1
v0.8.2
v0.8.3
v0.8.4
v0.8.5
v0.8.6
v0.8.7
v0.8.8
v0.8.9
v0.9.0
v0.9.1
v0.9.2
v0.9.2.5
v0.9.2.6
v0.9.3
v0.9.4
v0.9.5
v0.9.5.1
v0.9.5.2
v0.9.6
v0.9.6.1
v0.9.6.3
v0.9.6.4
v0.9.7
v0.9.7.1
v0.9.7.2
v0.9.7.3
v0.9.7.4
v0.9.7.5
v0.9.7.6
v0.9.7.7
v0.9.7.8
v0.9.7.9
v0.9.8
v0.9.8.1
v0.9.8.10
v0.9.8.11
v0.9.8.2
v0.9.8.3
v0.9.8.4
v0.9.8.5
v0.9.8.6
v0.9.8.7
v0.9.8.8
v0.9.8.9
v0.9.9.1
v0.9.9.10
v0.9.9.11
v0.9.9.12
v0.9.9.13
v0.9.9.14
v0.9.9.15
v0.9.9.16
v0.9.9.17
v0.9.9.18
v0.9.9.2
v0.9.9.3
v0.9.9.4
v0.9.9.5
v0.9.9.6
v0.9.9.7
v0.9.9.8
v0.9.9.9
v1.*
v1.0.0
v1.1.0.beta2
v1.1.0.beta3
v1.1.0.beta4
v1.1.0.beta5
v1.1.0.beta6
v1.1.0.beta6b
v1.1.0.beta7
v1.1.0.beta8
v1.2.0.beta1
v1.2.0.beta2
v1.2.0.beta3
v1.2.0.beta4
v1.2.0.beta5
v1.2.0.beta6
v1.2.0.beta7
v1.2.0.beta8
v1.2.0.beta9
v1.3.0.beta1
v1.3.0.beta10
v1.3.0.beta11
v1.3.0.beta2
v1.3.0.beta3
v1.3.0.beta4
v1.3.0.beta5
v1.3.0.beta6
v1.3.0.beta9
v1.4.0.beta1
v1.4.0.beta10
v1.4.0.beta11
v1.4.0.beta12
v1.4.0.beta2
v1.4.0.beta3
v1.4.0.beta4
v1.4.0.beta5
v1.4.0.beta6
v1.4.0.beta7
v1.4.0.beta8
v1.4.0.beta9
v1.5.0.beta1
v1.5.0.beta10
v1.5.0.beta11
v1.5.0.beta12
v1.5.0.beta13
v1.5.0.beta13b
v1.5.0.beta14
v1.5.0.beta2
v1.5.0.beta4
v1.5.0.beta5
v1.5.0.beta6
v1.5.0.beta7
v1.5.0.beta8
v1.5.0.beta9
v1.6.0.beta1
v1.6.0.beta10
v1.6.0.beta11
v1.6.0.beta12
v1.6.0.beta2
v1.6.0.beta3
v1.6.0.beta4
v1.6.0.beta5
v1.6.0.beta6
v1.6.0.beta7
v1.6.0.beta8
v1.6.0.beta9
v1.7.0.beta1
v1.7.0.beta10
v1.7.0.beta11
v1.7.0.beta2
v1.7.0.beta3
v1.7.0.beta4
v1.7.0.beta5
v1.7.0.beta6
v1.7.0.beta7
v1.7.0.beta8
v1.7.0.beta9
v1.8.0.beta1
v1.8.0.beta10
v1.8.0.beta11
v1.8.0.beta12
v1.8.0.beta13
v1.8.0.beta2
v1.8.0.beta3
v1.8.0.beta4
v1.8.0.beta5
v1.8.0.beta6
v1.8.0.beta7
v1.8.0.beta8
v1.8.0.beta9
v1.9.0.beta1
v1.9.0.beta10
v1.9.0.beta11
v1.9.0.beta12
v1.9.0.beta13
v1.9.0.beta14
v1.9.0.beta15
v1.9.0.beta16
v1.9.0.beta17
v1.9.0.beta2
v1.9.0.beta3
v1.9.0.beta4
v1.9.0.beta5
v1.9.0.beta6
v1.9.0.beta7
v1.9.0.beta8
v1.9.0.beta9
v2.*
v2.0.0.beta1
v2.0.0.beta10
v2.0.0.beta2
v2.0.0.beta3
v2.0.0.beta4
v2.0.0.beta5
v2.0.0.beta6
v2.0.0.beta7
v2.0.0.beta8
v2.0.0.beta9
v2.1.0.beta1
v2.1.0.beta2
v2.1.0.beta3
v2.1.0.beta4
v2.1.0.beta5
v2.1.0.beta6
v2.2.0.beta1
v2.2.0.beta10
v2.2.0.beta2
v2.2.0.beta3
v2.2.0.beta4
v2.2.0.beta5
v2.2.0.beta6
v2.2.0.beta7
v2.2.0.beta8
v2.2.0.beta9
v2.3.0.beta1
v2.3.0.beta10
v2.3.0.beta11
v2.3.0.beta2
v2.3.0.beta3
v2.3.0.beta4
v2.3.0.beta5
v2.3.0.beta6
v2.3.0.beta7
v2.3.0.beta8
v2.3.0.beta9
v2.4.0.beta1
v2.4.0.beta10
v2.4.0.beta11
v2.4.0.beta2
v2.4.0.beta3
v2.4.0.beta4
v2.4.0.beta5
v2.4.0.beta6
v2.4.0.beta7
v2.4.0.beta8
v2.4.0.beta9
v2.5.0.beta1
v2.5.0.beta2
v2.5.0.beta3
v2.5.0.beta4
v2.5.0.beta5
v2.5.0.beta6
v2.5.0.beta7
v2.6.0.beta1
v2.6.0.beta2
v2.6.0.beta3
v2.6.0.beta4
v2.6.0.beta5
v2.6.0.beta6
v2.7.0.beta1
v2.7.0.beta2
v2.7.0.beta3
v2.7.0.beta4
v2.7.0.beta5
v2.7.0.beta6
v2.7.0.beta7
v2.7.0.beta8
v2.7.0.beta9
v2.8.0.beta1
v2.8.0.beta10
v2.8.0.beta11
v2.8.0.beta2
v2.8.0.beta3
v2.8.0.beta4
v2.8.0.beta5
v2.8.0.beta6
v2.8.0.beta7
v2.8.0.beta8
v2.8.0.beta9
v2.9.0.beta1
v2.9.0.beta10
v2.9.0.beta11
v2.9.0.beta12
v2.9.0.beta13
v2.9.0.beta14
v2.9.0.beta2
v2.9.0.beta3
v2.9.0.beta4
v2.9.0.beta5
v2.9.0.beta6
v2.9.0.beta7
v2.9.0.beta8
v2.9.0.beta9
v2025.*
v2025.12.0-latest
v2026.*
v2026.1.0
v2026.1.0-latest
v2026.1.1
v2026.2.0
v2026.2.0-latest
v2026.3.0-latest
v3.*
v3.0.0.beta15
v3.0.0.beta16
v3.1.0.beta1
v3.1.0.beta2
v3.1.0.beta3
v3.1.0.beta4
v3.1.0.beta5
v3.1.0.beta6
v3.1.0.beta7
v3.1.0.beta8
v3.2.0.beta1
v3.2.0.beta2
v3.2.0.beta3
v3.2.0.beta4
v3.2.0.beta5
v3.3.0.beta1
v3.3.0.beta2
v3.3.0.beta3
v3.3.0.beta4
v3.3.0.beta5
v3.3.0.beta6
v3.4.0.beta1
v3.4.0.beta2
v3.4.0.beta3
v3.4.0.beta4
v3.5.0.beta1
v3.5.0.beta2
v3.5.0.beta3
v3.5.0.beta4
v3.5.0.beta5
v3.5.0.beta6
v3.5.0.beta7
v3.5.0.beta8
v3.5.0.beta9
v3.6.0.beta1
v3.6.0.beta2

Database specific

source
"https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-31869.json"