buy() and mintNft() Accept ETH via payable Modifier — ETH Permanently Locked
buy() and mintNft() are both marked payable but operate exclusively with USDC via transferFrom. They have no logic to handle, refund, or account for ETH.
Any ETH sent alongside these calls is accepted by the contract and permanently locked. The contract has no receive() function, no withdraw() for ETH, and no fallback,there is no recovery path.
Likelihood:
Users interacting directly with the contract (not via a frontend) may send ETH assuming it is the payment method, especially given the payable modifier's presence in the ABI
Wallet interfaces display a value field for payable functions, inviting ETH attachment
Impact:
Any ETH sent is permanently locked with no recovery mechanism
Users lose ETH with no way to retrieve it — no owner withdrawal function exists for native ETH
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.
The contest is complete and the rewards are being distributed.