There is no check that proxy
address passed to distributeByOwner
function corresponds to organizer
, contestId
, and implementation
. If the ProxyFactory
contract has at least one expired contest the owner can use organizer
, contestId
, and implementation
from it to pass expiration check at the same time providing proxy
address of the current contest to execute distribution immediately.
The test below illustrates how the owner can successfully call distributeByOwner
before the contest expiration.
The owner can distribute stuck funds before the contest expiration.
Manual Review
Derive proxy
using getProxyAddress
function instead of passing it through arguments.
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.