The distributeRewards
function in the GaugeController contract can be called by any address at any time, since the _calculateReward
will return the same value, an attacker can call the funciton multiple times and notify the gauge with multiple fake rewards.
The issues:
No access control on who can call the function
No cooldown between distributions
Anyone can trigger reward distributions at any time
Multiple calls in the same block are possible
Inflation of reward tracking for gauges which can break the rewarding system.
Manual Review
Add access control and distribution timing constraints.
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.