When borrowers who have already taken a loan attempt to borrow additional debt tokens, the protocol issues them a balanceIncrease
. However, the protocol currently determines whether a borrower is existing solely by checking their balanceOf()
debt token balance. This check is insecure because attackers can manipulate their balance by transferring tokens to another wallet to falsely appear as a new borrower.
The protocol initiates debt token minting by checking if a user is borrowing for the first time via their debt token balance balanceOf(onBehalfOf)
. However, this mechanism is flawed because attackers can transfer all their debt tokens to another wallet prior to borrowing again. This resets their balance to zero, allowing them to bypass borrower status checks and illegitimately receive first-time borrower benefits
As a result, attackers can avoid incurring the balanceIncrease
by transferring their debt tokens to another wallet, effectively resetting their balance and appearing as a new borrower.
Manual audit
The preferable method is to track user debt via a state variable instead of relying on token balances.
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.