The delegateBoost
function in the BoostController
contract lacks a critical validation step: it does not check whether the to
address (representing the pool) is a supported pool. This oversight could allow users to delegate boosts to unsupported pools, leading to inconsistencies in the contract's state and potential vulnerabilities in the boost management system.
The delegateBoost
function only checks that the to
address is not the zero address:
The function does not verify whether the to
address is a supported pool by checking the supportedPools
mapping. This means that users can delegate boosts to any address, including unsupported pools.
Inconsistent State: Boosts may be delegated to pools that are not intended to receive boosts, causing inconsistencies in the contract's state.
Wasted Gas: Users may waste gas by delegating boosts to unsupported pools, as these boosts will not be utilized.
Potential Exploits: Malicious actors could exploit this oversight to manipulate the contract's state or disrupt its functionality.
The impact is Low, the likelihood is Medium, so the severity is Low.
Manual Review
To address this issue, the delegateBoost
function should include a validation step to ensure that the to
address is a supported pool. Here is the updated code:
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.