Discourse is an open-source discussion platform. An authorization bypass in the poll plugin allowed authenticated users to perform actions on polls they were not authorized to access. This included voting, removing votes, and changing the open/closed status of polls. The issue occurred because the authorization check and poll lookup used different resolutions when the `post id` parameter was passed as an array (e.g., `post id[]=&post id[]=`). This affected the following API endpoints within the `DiscoursePoll::PollsController`:
- `/vote`
- `/remove vote`
- `/toggle status`
The `post id` parameter is a vulnerable parameter.