Wrong implementation address can be mistakenly passed to setContest causing funds to be stuck forever
In setConstest the owner is supposed to pass correct and actual verison of implementation, however only check for address zero is made. Owner can mistakenly pass an incorrect implementation address which might freeze the funds forever. If in passed address there aren't implemented functions to recover these funds they will be lost. Being aware that owner is a trusted role it should not be possible, however this mistake can happen (off-chain scripts not being updated, human error). Likelyhood is very low but impact is high.
Sponsor provides funds for next contest.
Owner precomputes proxy address with wrong implementation address which is not able to recover funds.
Unaware sponsor transfers his funds to this address.
Owner calls setContest with incorrect implementation address.
Funds are stuck in proxy address without a way to send them back or distribute them to the potential users (supporters).
Sponsor's funds intended for users are lost forever.
VScode, Foundry
The best way to solve this issue is createing a state variable holding current implementation address. Create seperate function to update current implementation version (with address) and set onlyOwner modifier. setContest function is also restricted only to owner so centralization risk does not increase.
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.