Reentrancy attack can be done in donate() function of GivingThanks contract.
The donate()
function transfers Ether to an external charity
address using a low-level call
. This transfer is followed by state changes (minting ERC721 tokens). If the charity
contract has a fallback or receive
function that calls back into the donate()
function, it could repeatedly execute and drain funds before the state is updated.
An attacker could potentially exploit this vulnerability to withdraw more funds than intended or disrupt the contract's functionality, leading to financial loss.
manual review
Use the ReentrancyGuard
Modifier
Impact: High, one charity can reenter the donate function with the same ETH provided and mint several NFT. Likelyhood: Low, any malicious charity can do it but Admin is trusted and should verify the charity contract before "verifying" it.
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.