The 'withdrawFees()' function can be disabled by an attacked by ensuring the require statement will always fail.
An attacker can send some ether to the address to ensure that the require statement always fail.
The code below demonstrates how an attacker can send funds through a smart contract self-destruct attack.
Attack Contract:
By deploying the attack contract and sending any amount of ether during deployment. An attacker can then execute the attack function above.
The attack can be done like below:
Any attacker will be able to redo this attack and essentially blocking the fee address from ever receiving any funds because address(this).balance == uint256(totalFees)
can never be equal anymore.
Manual review, Foundry
Do not rely on address(this).balance
Use another internal accounting to get proper balance, such as;
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.