Because contest organizers can freely choose reward recipients, they can distribute all rewards to themselves.
PoC:
Malicious organizer arranges contest off-chain.
Owner calls setContest() in ProxyFactory contract.
Organizer and/or sponsors send tokens to the predetermined proxy address.
Supporters work on the contest and submit their work to the organizer for judging
Contest ends and organizer calls deployProxyAndDistribute() in the ProxyFactory contract, setting their own address as the only reward receiver
Organizer receives all of the rewards deposited by themselves and/or sponsors, minus the protocol fee. Additionally, the organizer now possesses all the work done by supporters.
Supporters receive zero awards for their work, and the organizer receives all contest funds minus the protocol fee. Protocol funds are directly at risk.
Manual Review
Do not allow the contest organizers to distribute awards. Instead, delegate reward distribution solely to the protocol owner. This would eliminate a large amount of attack surface related to malicious organizers.
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.