Not validating the existence of a valid proxy in the distributeByOwner function can result in attempting to distribute and in fact, distributing to a non-deployed proxy or a proxy contract linked to another contest; thereby resulting in loss of funds for the contest
This vulnerability can be seen in the distributeByOwner (L205-219) function at the ProxyFactory.sol contract which lacks checks for the proxy address being passed in the params to be validated as deployed and/or not belonging to another open contest on the platform
The caller of this function, including a bad actor can exploit this vulnerability to distribute rewards to a completely different contest or organizer in the case the owner has been compromised. A typical scenario would be setting up a challenge/competetition not intended to be fulfilled > getting sponsored > exploiting supporter's work > ultimately compromising owner and providing a proxy address to another contest (used specifically for dispersing funds to a bunch of random supporters non-existent) This will not only present the protocol in bad faith but ultimately lose sponsor's funds and supporters support.
Manual Review / VSCode
getProxyAddress before attempting to distribute
Employ a hardened check utilizing salt, owner, contest ID and implementation comparison
Verify proxy is infact existent/deployed before attempting to distribute
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.