A malicious owner of LiquidationPoolManager contract can initiate a Denial of Service (DoS) attack on the distributeFees function. This is possible if the owner of the LiquidationPoolManager contract manipulates the poolFeePercentage to exceed the maximum limit defined by HUNDRED_PC (100%, or 1e5). Such an action can disrupt the normal function execution of distributeFees.
If distributeFees is more than HUNDRED_PC the _feesForPool variable will have value more than the actual balance of EUROs of the contract. Because of that the transfer call after that will fail.
The following test in liquidityPoolManager.js demonstrates a reverting distributeFees call (copied from 'distributes % of accrued EUROs fees to the pool stakers' and just injected the setter in question):
The distributeFees function is unable to perform, the protocol fees can not be collected also the function runLiquidation can not be performed.
Manual review and hardhat
Set some limits to poolFeePercentage state variable, values like 0 and exactly HUNDRED_PC are not recommended, because if it equals 0 the fees will always be 0 and if it equals HUNDRED_PC the fee will be equal to the whole balance.
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.