The EggstravaganzaNFT::setGameContract function allows the owner to change the authorized minting contract at any time without notice or delay, creating a centralization risk that undermines the trustlessness of the system.
The NFT contract allows the owner to change which contract is authorized to mint NFTs without any restrictions:
This creates several vulnerabilities:
The owner can change the game contract at any time without notice
No events are emitted when this critical parameter changes
Users have no way to verify which contract is authorized to mint
No timelock or delay mechanism for such a critical parameter change
The owner can silently change which contract is authorized to mint NFTs
Could be exploited by a compromised owner account to redirect minting privileges
Users have no transparency into changes to critical game parameters
Undermines the trustlessness of the 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.