The refinance
function in the Lender.sol
file has a potential reentrancy vulnerability because it makes multiple external calls to transfer tokens before updating its state variables.
A reentrancy vulnerability occurs when a contract makes an external call to another contract before updating its state variables. This can allow an attacker to call the function again before its state is updated, potentially leading to unexpected behavior.
In the case of the refinance
function, the function makes multiple external calls to transfer tokens before updating its state variables. This can allow an attacker to call the function again before its state is updated, potentially leading to unexpected behavior.
If an attacker is able to exploit this vulnerability, they may be able to manipulate the state of these variables in unexpected ways, potentially leading to loss of funds or other unintended consequences.
The vulnerability was identified through manual review of the code.
To mitigate this issue, it is recommended to use a reentrancy guard modifier like the one provided by the OpenZeppelin library. The ReentrancyGuard
contract can be inherited by other contracts to make the nonReentrant
modifier available. This modifier can be applied to functions to prevent reentrant calls by using a lock variable to keep track of whether the function is currently being executed. If the function is called again before the first call has completed, the lock variable will prevent the second call from executing.
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.