Effected Contract: ProxyFactory.sol
When a Contest Proxy is funded by two or more assets that are on the whitelist, the organizer is only able to distribute one of them. The other assets are stuck until after the Context expiration is reached, in which the Factory Owner can distribute other assets.
Owner setsContest for Contest 1
Sponsors fund the Contest 1 Proxy
Contest 1 ends
Contest 1 Expires (owner can distribute)
Owner can pass in any proxy address to distributeByOwner, but passes in Contest 1 id, organizer, and implementation address.
Owner might accidentally or maliciously call an arbitrary contract address that is passed in. This could be another currently non-expired Contest that has been deployed or some other arbitrary functionality.
A non-expired but deployed (owner accessible, when it shouldn't yet be) contest could be distributed by an Owner.
The owner could accidentally or maliciously call arbitrary contract code using this bug and if tricked could run a proxy contract that sends malicious calldata to the Distributor.
Manual Review
Determine the correct proxy from contest data passed in, using the tested getProxyAddres function, similar to the other functions that call distribute in the contract.
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.