A malicious contract could exploit a reentrancy vulnerability during NFT withdrawals.
The function performs the external call (NFT transfer) before clearing internal state:
If msg.sender
is a contract, it could re-enter withdrawEgg
via a fallback/receiver hook before the state is fully cleared.
Could allow multiple withdrawals of the same NFT or manipulation of internal state in an unsafe manner.
Manual review
Use OpenZeppelin's ReentrancyGuard
.
Also consider state changes before external calls as an added safeguard
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.