Root + Impact
The withdraw() function uses Solidity's .transfer() to send ETH to the target address. This forwards a fixed 2300 gas stipend to the recipient.
If target is a smart contract (e.g., a multisig wallet like Gnosis Safe, or a DAO treasury), the 2300 gas may not be enough for the recipient's receive() or fallback() function, causing the withdrawal to permanently revert.
Likelihood:
Many protocol owners use multisig wallets (Gnosis Safe) as the owner address, and would logically set the withdrawal target to another smart contract (treasury, splitter)
Gnosis Safe's receive() function requires more than 2300 gas
Impact:
All ETH from pass sales becomes permanently locked in the FestivalPass contract if the target is a contract that needs more than 2300 gas
The owner cannot change the withdrawal mechanism — there is no alternative withdrawal function
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.