Description:
When users call LiquidationPool::claimRewards()
to claim their rewards from the pool, the contract attempts to send them their ERC20 and native token rewards at once. However, not all addresses can receive native tokens like ETH, for example, contracts without a receive()
or fallback()
function. As a result, this function fails every time such a user calls it.
Impact:
Users' rewards are permanently locked in the contract, as no one can withdraw them on their behalf.
Tools Used:
Manual review
Recommended Mitigation Steps:
Whenever a transfer of native tokens like ETH fails, wrap it and send it as ERC20 to the same address.
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.