Reentracy attack allows for multiple flash loans to be taken out by a single attacker, leading to stolen funds.
When ThunderLoan makes the function call [executeOperation()] to the receiver address/contract, to recall the loan, there are no return checks for the success of the call. So an attacker can have fallback function that calls flashloan() recursively, where thunderloan makes successive transfers of the underlying asset to the attacker.
These successive transfers of the underlying asset to the attack continues until the attacker stops or the thunderloan asset balance has been completely drained.
include a require statement around the functionCall() to check whether the reciever address contract has correctly implemented the executeOperation() function to pay back the loan.
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.