Ad

CVE-2026-31805

HIGH CVSS 3.1: 8.2 EPSS 0.10%
Updated Mar 24, 2026
Discourse
Parameter Value
CVSS 8.2 (HIGH)
Affected Versions 2026.1.0 — 2026.2.1
Fixed In 2026.1.2
Type CWE-863 (Incorrect Authorization), CWE-20 (Improper Input Validation)
Vendor Discourse
Public PoC No

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.

Attack Parameters

Attack Vector
Network
Can be exploited remotely
Attack Complexity
Low
Easy to exploit
Privileges Required
None
No privileges needed
User Interaction
None
No user interaction needed

Impact Assessment

Confidentiality
Low
Partial data leak
Integrity
High
Complete data modification
Availability
None
No disruption

CVSS Vector v3.1

Vulnerable Products 3

Configuration From (including) Up to (excluding)
Discourse Discourse
cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*
2026.1.0 2026.1.2
Discourse Discourse
cpe:2.3:a:discourse:discourse:*:*:*:*:*:*:*:*
2026.2.0 2026.2.1
Discourse Discourse
cpe:2.3:a:discourse:discourse:2026.3.0:*:*:*:latest:*:*:*