The refund() function contains a critical flaw where it refunds all tokens and ETH to the user but fails to reset their participant status in the participant mapping. This oversight allows users to maintain their participant status even after withdrawing all their funds.
This vulnerability can be exploited in several ways:
Users can withdraw all their funds while maintaining participant privileges
These "zero-stake" participants can still:
Be counted as valid participants for the event
Potentially become the host through the changeHost function
Change their participation status through changeParticipationStatus
This could lead to inaccurate participant counting and potential manipulation of the event organization
Add participant status reset in the refund function:
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.