Anyone can call function buyLoan(uint256 loanId, bytes32 poolId)
and become the lender of the loan.
buyLoan()
can be called by anyone for any loan and pool. The function then transfers the loan to that pool after all the checks pass. Finally, it sets the lender of the transferred loan to msg.sender
here:
Since anyone call this function, lender can be set to an address different from the pool's actual lender. After this, if the loan is seized by calling seizeLoan()
, loan's lender is transferred the collateral:
Since loan.lender
is set incorrectly, the collateral tokens are effectively stolen.
Collateral token can be incorrectly transferred
Manual Review
Lender assignment should be based on the actual lender of the pool through poolId.lender
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.