Multiple functions in Lender.sol do not check return value for transferFrom() and transfer().
Function calls do not revert when returned value is false yet updates internal accounting. User can call borrow() while having 0 collateralToken in their wallet. After borrower repays, collateralTokens is sent back.
Drain all collateral token from contract/Permanent loss of funds.
Foundry
Considered using SafeERC20 library from OpenZeppelin.
https://github.com/OpenZeppelin/openzeppelin-contracts/blob/master/contracts/token/ERC20/utils/SafeERC20.sol
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.