The withdraw function uses Solidity's .transfer() method which forwards only 2300 gas.
This is insufficient for smart contract wallets (multisigs, Gnosis Safe) that require more gas in their receive/fallback functions.
Likelihood:
Owner sets a multisig or smart contract as the withdrawal target
Many DAOs and protocols use multisig wallets
Impact:
ETH from pass sales permanently locked in the contract
No fallback mechanism to recover funds
Below PoC demonstrates that a receiver needing a lot of gas in the receive() cannot withdraw the fund.
Use low-level `.call{}` with success check and emit event to inform relevant party about the successful withdraw
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.