Description
Certain ERC20 tokens, like USDC, possess the capability to blacklist specific addresses, effectively impeding their ability to send or receive tokens. Transactions involving these blacklisted addresses result in reverts. Integrating such tokens in the future might result in smart vaults that cannot be liquidated. The vulnerability is situated within LiquidationPoolManager::forwardRemainingRewards()
. This function utilizes .transfer()
exclusively instead of the safer .safeTransfer()
method, observed specifically on line 54. Furthermore, it lacks the provision to specify a to
recipient address. This situation could lead to significant issues when attempting to transfer funds to the protocol's multisig, especially if this address is blacklisted by any token within the _tokens
array.
Impact
Incorporating ERC20 tokens with blacklist functionality into the accepted collateral tokens might result in the protocol multisig being unable to claim the remaining rewards following a smart vault's liquidation. This would cause the liquidation to revert, thereby disrupting a critical functionality with a high impact.
Recommended Mitigation
To mitigate this issue, consider modifying the function to include a to
address variable within the function parameters. This enhancement would enable the specification of the recipient address for transferred funds, ensuring a more secure transfer process.
Tools Used
Manual Review
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.