Description:
When users swap EUROs, a small fee is intended to be sent to the SmartVaultManagerV5::liquidator address (i.e., LiquidatorPoolManager) to distribute to stakers. However, the vault erroneously sends these fees to the SmartVaultManagerV5::protocol address, which is the treasury. Instances of fees being directed to the SmartVaultManagerV5::protocol instead of the SmartVaultManagerV5::liquidator are evident in the following code segments:
To clarify any doubts or confusion about the difference between the protocol and liquidator addresses, consider the following points:
The known issues section of the contest document describes the protocol address as the treasury address.
"protocol address must be payable and able to handle ERC20s transferred. This address will be set to our Protocol's treasury wallet."
This code line clearly states which address is the liquidator. This point is further reinforced by the onlyLiquidator modifier.
Impact:
When fees are sent to the protocol instead of the liquidator, the stakers receive no rewards, which disincentives them from staking. Although the funds aren't permanently lost, as they can always be sent back to the liquidator, the advantage gained from staking early is lost for early stakers.
Proof of Concept:
For a visual representation of the value flow in the network, see here.
Tools Used:
Manual review
Foundry
Recommended Mitigation Steps:
Transfer fees to liquidator instead of protocol.
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.