The EggVault::setEggNFT function allows the owner to change the NFT contract address at any time without notice or transparency, creating a centralization risk that undermines the trustlessness of the vault system.
The vault contract allows the owner to change which NFT contract it recognizes without any restrictions or transparency:
This creates several vulnerabilities:
The owner can change the NFT contract at any time without notice
No events are emitted when this critical parameter changes
Users have no way to verify which NFT contract is recognized by the vault
No timelock or delay mechanism for such a critical parameter change
The owner can silently change which NFT contract the vault recognizes
Could be exploited by a compromised owner account to point to a malicious NFT contract
Users who have deposited eggs may find their NFTs no longer recognized by the vault
Undermines the trustlessness of the vault system
Manual code review
Centralization risk assessment
Implement proper event emissions and a timelock mechanism
Owner is trusted and is not expected to interact in ways that would compromise security
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.