The EggVault contract uses transferFrom for NFT withdrawals instead of the ERC721-standard safeTransferFrom, creating a risk of permanent NFT loss when users withdraw tokens to smart contracts that do not support ERC721. This violates best practices and can lead to irreversible asset locking.
Location:
EggVault::withdrawEgg(uint256 tokenId)
Issue:
The contract uses transferFrom for NFT transfers, which does not verify if the recipient can handle ERC721 tokens.
If an NFT is sent to a contract that does not implement IERC721Receiver, the transfer succeeds, but the NFT becomes permanently stuck—unable to be recovered.
Attack Scenarios:
Accidental Transfer to Incompatible Contracts
A user withdraws an NFT to a DEX, lending protocol, or other contract not designed to hold NFTs.
The transaction completes, but the NFT is locked forever because the recipient cannot process it.
Root Cause:
The contract fails to comply with EIP-721, which mandates the use of safeTransferFrom for secure NFT transfers.
Missing IERC721Receiver implementation in the vault contract.
This leads to permanent, irreversible loss of user NFTs.
Manual Review
safeTransferFrom for All WithdrawalsIERC721Receiver in EggVault and receiver contractNFTs are transferred to contracts without onERC721Received implementation.
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.