There is a potential reentrancy attack vector in Lender.sol's repay function. If one of the tokens being transferred in the function makes use of the before/after token transfer callbacks, a malicious actor could potentially reenter and drain the pool.
This vector also appears in the seizeLoan function.
ERC20 callbacks open up the possibility of reentrancy.
Pools can potentially be drained during reentrancy
Manual Review
Follow standard Checks/Effects pattern, and move the delete loans[loanId] line in Lender.sol's repay function to before the tokens are transferred to prevent the same loanId from being used to drain the pool in a reentrancy attack.
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.