The depositEggToVault()
function uses an insecure transfer pattern that could lead to NFT loss if the vault deposit fails after transfer.
If the vault's depositEgg()
call fails due to:
Temporary vault pause
Gas limit exceeded
Reentrancy protection
The NFT remains stranded in the vault contract without being properly registered.
• Permanent loss of NFTs
Requires admin intervention to recover
• Erodes user trust in protocol safety
• Manual code review
• Slither (detects dangerous external calls)
• Foundry test simulating failed deposit:
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.