Omniscia 0xPhase Audit
BalancerSettersFacet Manual Review Findings
BalancerSettersFacet Manual Review Findings
BSF-01M: Inexistent Sanitization of Performance Fee
| Type | Severity | Location |
|---|---|---|
| Input Sanitization | ![]() | BalancerSettersFacet.sol:L62-L70 |
Description:
The BalancerSettersFacet::setPerformanceFee function will not sanitize the input newPerformanceFee, permitting the contract to be misconfigured and potentially fail to calculate fees properly.
Impact:
The fee applied by BalancerBase::_totalBalance will be unfair and potentially incalculable if the performance fee within BalancerSettersFacet is misconfigured.
Example:
62/// @inheritdoc IBalancerSetters63 /// @custom:protected onlyRole(BalancerConstants.MANAGER_ROLE)64 function setPerformanceFee(65 uint256 newPerformanceFee66 ) external override onlyRole(BalancerConstants.MANAGER_ROLE) {67 _s().performanceFee = newPerformanceFee;68
69 emit PerformanceFeeSet(newPerformanceFee);70 }71}Recommendation:
We advise the code to introduce a require check ensuring that newPerformanceFee is less than 1 ether at minimum based on the implementation of BalancerBase::_totalBalance. Additionally, we strongly advise the limit to be set to a lower value than 100% to ensure that the performance fee is up to a fair value.
Alleviation:
A fee limitation is now imposed by BalancerSettersFacet::setPerformanceFee which permits the fee to be up-to 10% of the overall amount, alleviating this exhibit in full.
