The EggVault
contract did not implement the IERC721Receiver
interface, which would prevent it from safely receiving NFTs via safeTransferFrom()
.
Without implementing onERC721Received()
, the vault will reject all transfers made with safeTransferFrom()
, causing transactions to revert. This breaks ERC721 compatibility and limits safe integration with wallets and other NFT-aware contracts.
Additionally, without this interface, the vault cannot track who deposited the NFT using the secure from
parameter. This leads to reliance on insecure external calls such as depositEgg()
, which are exposed to spoofing and frontrunning attacks.
Deposits using safeTransferFrom()
will fail.
Contracts and wallets cannot safely send NFTs to the vault.
Insecure deposit tracking increases attack surface.
Manual code inspection
Solidity docs
OpenZeppelin ERC721 spec
Import and implement IERC721Receiver
in the vault.
Handle all depositor registration inside onERC721Received()
.
Test compatibility with safeTransferFrom()
flows.
Eliminate reliance on external deposit functions.
NFTs 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.