deposit() requires the user to transfer an amount of the underlying asset to get shares but in the implementation, the mint() comes before the transfer which can cause the user/attacker to mint shares with zero assets in their wallet. which he can then call redeem() and claim some free assets for himself.
An attacker can mint new shares for free without any collateral by calling the deposit()
without the underlying token in his wallet since the function mints the assetToken
before the deposit is made.
Loss of funds as the attacker has free assetToken
s to redeem after the next depositors
Manual Review
make the deposit before the token is minted
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.