The redeem function does not confirm that a depositor (or an attacker) has the amount of asset tokens in their wallet that they are trying to redeem. You could try to redeem tokens in the Asset Token contract that you did not deposit, and it might
I wrote a test to see if an attacker could redeem tokens for which they did not have corresponding asset tokens, and it did fail because there was an insufficient balance of asset tokens to be burned, but the burn could also fail silently and then the attacker could potentially receive underlying tokens that they didn't have a right to, and this could be prevented by validating that they have amountOfAssetToken
I also wrote this test to see if a depositor could redeem tokens different than the ones they deposited and this one failed for the same reason
A person who does not have sufficient asset tokens who tries to call redeem should be reverted immediately. There is no good reason a person who doesn't have sufficient asset tokens should be calling redeem and it only opens up potential attack surface to allow the function call to be processed.
Manual review
Foundry
Add a check at the beginning of the redeem function:
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.