The UUPSOwnableProxied
contract inherits from OpenZeppelin's Ownable
and UUPSUpgradeable
contracts, intending to provide a convenient ownable UUPS proxy. However, the contract lacks an initializer function to set the initial owner, leaving the contract without a defined owner upon deployment.
Without an initial owner set:
Functions protected by the onlyOwner
modifier cannot be executed by any user, rendering these functions unusable.
The contract cannot be properly managed or upgraded as intended, leading to potential security & operational risks.
Deploy the UUPSOwnableProxied
contract.
Attempt to call any onlyOwner
function ( e.g., _authorizeUpgrade
).
The function will revert since no owner is set.
Implement an initializer function to set the initial owner during the first deployment. This ensures that the owner is correctly set and the onlyOwner
functions can be used as intended.
New code should look like this:
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.