It is possible for an attacker to forcibly send ether to the PuppyRaffle contract, breaking a key invariant that prevents withdrawal of ether attributed to fees.
An attacker can create a smart contract (referred to as Attack) that can selfdestruct and forcibly send an amount of ETH to the PuppyRaffle contract. This can be achieved at very low cost.
Breaks a contract invariant, leading to a loss of funds attributed to fees.
Foundry.
Do not rely on address(this).balance in the first line of the withdraw() function. Remove this require statement.
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.