Normally, the Ownable contract from OpenZeppelin automatically assigns the deployer msg.sender as the contract owner when inherited. This allows only the owner to call privileged functions such as mintFaucetTokens, burnFaucetTokens, and refillSepEth.
In the current constructor of RaiseBoxFaucet, the code attempts to pass msg.sender to Ownable using Ownable(msg.sender). Modern OpenZeppelin versions do not support a constructor with parameters, so this causes either a compilation error or results in the owner being unset address(0), breaking all onlyOwner functionality.
Likelihood:
Occurs during deployment with OpenZeppelin v4.7.0 or later where Ownable no longer has a constructor that accepts parameters.
Developers may deploy the contract assuming msg.sender is owner, but owner() could be address(0), leaving all onlyOwner functions inaccessible.
Impact:
Owner-only functions such as minting, burning, ETH refills, and pausing drips become permanently uncallable.
Funds (both faucet tokens and ETH) may be permanently locked in the contract due to the inability to manage or withdraw them.
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.