You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Critical authorization bypass in voting system. Any authenticated player can vote on any dealt card (including their own) by executing JavaScript commands in browser console. The toggle_vote handler in player_live/show.ex lacks ownership validation, allowing complete voting manipulation and player can get more votes than voting limit.
Expected behavior
Players can only vote on other players' cards
Self-voting should be blocked server-side
Vote access should be validated by card ownership (dealt_card.player_id != current_player.id)
Desktop
OS: Windows 11
Browser: Chrome 120+
Version: Latest
Video Demo
2026-03-08.01-05-33.mp4
Additional context
Root cause: Line 132 in player_live/show.ex - DealtCard.find(dealt_card_id) fetches any card without checking dealt_card.player_id.
Impact:
Game integrity compromised
Players can boost own scores
Fair competition destroyed
Test case in player_live_test.exs:120 confirms vulnerability
Fix needed: Add authorization check in handle_event("toggle_vote", ...) before processing votes.
Describe the bug
Critical authorization bypass in voting system. Any authenticated player can vote on any dealt card (including their own) by executing JavaScript commands in browser console. The
toggle_votehandler in player_live/show.ex lacks ownership validation, allowing complete voting manipulation and player can get more votes than voting limit.Expected behavior
dealt_card.player_id != current_player.id)Desktop
Video Demo
2026-03-08.01-05-33.mp4
Additional context
Root cause: Line 132 in player_live/show.ex -
DealtCard.find(dealt_card_id)fetches any card without checkingdealt_card.player_id.Impact:
player_live_test.exs:120confirms vulnerabilityFix needed: Add authorization check in
handle_event("toggle_vote", ...)before processing votes.Script Used