Read the docs
TI-2026-24360 Aliases CVE-2026-31805

Discourse has a poll authorization bypass via post_id array parameter

Priority MEDIUM 41CWE-20Published · Updated

Key facts

Attack vector
Network
Privileges required
None
User interaction
None
Attack complexity
Low
Impact type
Security bypass
Confidentiality · integrity · availability
Low · High · None
Fix status
Fixed

Attack profile from CVSS 3.1 · NVD. Fix status from CNA. Impact type from CWE-863.

Summary

Discourse is an open-source discussion platform. Prior to versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2, an authorization bypass in the poll plugin allowed authenticated users to vote on, remove votes from, or toggle the open/closed status of polls they did not have access to. By passing post_id as an array (e.g. post_id[]=&post_id[]=), the authorization check resolves to the accessible post while the poll lookup resolves to a different post's poll. This affects the vote, remove_vote, and toggle_status endpoints in DiscoursePoll::PollsController. Versions 2026.3.0-latest.1, 2026.2.1, and 2026.1.2 contain a patch.

Why it matters now

Exploitation None reported CISA SSVC · not in CISA KEV
EPSS 0.00244 15th percentileScored 2026-11-07
Fix Fixed discourse (discourse): 2026.1.2, 2026.2.1

SSVC decision points

CISA ADP · SSVC 2.0.3

Exploitation
None
Automatable
Yes
Technical impact
Partial

The decision (Track, Attend, Act) also depends on your mission and well-being impact; see CISA's SSVC guide.

Affected products

VendorProductAffected versionsFixed inStatusSource
discoursediscourse2026.1.0-latest to before 2026.1.2; 2026.2.0-latest to before 2026.2.1; = 2026.3.0-latest.12026.1.2, 2026.2.1Patch availableCNA
  • discourse Vendordiscourse Affected 2026.1.0-latest to before 2026.1.2; 2026.2.0-latest to before 2026.2.1; = 2026.3.0-latest.1 Fixed in 2026.1.2, 2026.2.1 Patch available CNA

CPE configurations NVD · 2

CPEVersionsRoleVendor
cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*2026.1.0 to before 2026.1.2; 2026.2.0 to before 2026.2.1Vulnerablediscourse
cpe:2.3:a:discourse:discourse:2026.3.0:*:*:*:latest:*:*:*2026.3.0Vulnerablediscourse
  • cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:* Versions 2026.1.0 to before 2026.1.2; 2026.2.0 to before 2026.2.1 Vulnerable ·discourse
  • cpe:2.3:a:discourse:discourse:2026.3.0:*:*:*:latest:*:*:* Versions 2026.3.0 Vulnerable ·discourse

Remediation

  • Fix · CNA discourse (discourse) Fixed in 2026.1.2, 2026.2.1

Timeline

  1. 2026-10-02 Threatist record created from CVE-2026-31805

References

  • TI-2021-19656 Denial of Service in discourse CVSS 3.1MEDIUM 6.8
  • TI-2024-36150 Potential Backup file leaked via Nginx in Discourse CVSS 3.1HIGH 7.5
  • TI-2021-18002 RCE via malicious SNS subscription payload CVSS 3.1CRITICAL 10.0
  • TI-2026-24651 Discourse: Open redirect via `sso_destination_url` cookie in `enter` CVSS 4.0MEDIUM 5.1
  • TI-2026-22278 Discourse leaks private topic title and post excerpt via user action API endpoint CVSS 4.0HIGH 8.7
  • TI-2023-24152 Unauthenticated access to new private chat messages in Discourse CVSS 3.1HIGH 7.5
See all 262 →

Sources

This product uses the NVD API but is not endorsed or certified by the NVD. Sources and licences