An attacker could front-run a legitimate distribute() call.
distribute() does not check that the caller is authorized. An attacker could watch for a valid call and then submit their own first.
For example, they could create a contract:
And front-run the legit call and drain the funds.
Attacker could steal the full prize pool.
Manual
Use a commit-reveal scheme or require an authorized address:
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.