The BoostController::updateUserBoost function in the BoostController contract (contracts/core/governance/boost/BoostController.sol) lacks proper access control, allowing any external caller to update boost data for any user. This vulnerability enables malicious actors to manipulate boost parameters, potentially resulting in unfair advantages and undermining the protocol's economic model.
Issue:
The function is declared as external, meaning any account can call it.
There is no access control mechanism (e.g., onlyRole(MANAGER_ROLE) or require(msg.sender == user)).
As a result, an attacker can arbitrarily modify boost values for any user.
Economic Manipulation:
Attackers can artificially increase their boost or reduce others’ boost, skewing rewards distribution.
Unfair Advantage:
Malicious actors may gain undue benefits in reward systems or influence governance outcomes.
Protocol Exploitation:
Manipulated boost data could destabilize the protocol’s economic model, leading to financial loss for legitimate participants.
Manual Code Review
Implement Role-Based Access Control:
Add an access control modifier such as onlyRole(MANAGER_ROLE) to ensure that only authorized accounts can update boost data:
Alternative Approach:
If users should only update their own boost data, enforce a check to ensure that msg.sender is either the user or has the proper role:
Conduct Further Testing:
Validate the fix with comprehensive unit tests and consider a formal audit to ensure no other functions are vulnerable to unauthorized modifications.
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.