The BoostController's delegation mechanism is vulnerable to front-running attacks. The delegateBoost()
function delegates boost power but doesn't track boost usage, and updateUserBoost()
doesn't verify remaining boost availability:
Let's dig into the attack path:
Delegator with high veRAC balance delegates boost to user
When user attempts to use the boost, delegator front-runs transaction
Delegator consumes boost power first
User's transaction completes but receives minimal boost
User loses potential rewards due to reduced boost
Track used boost amounts:
Add minimum boost parameter to protect users:
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.