The ProxyFactory
contract uses an incorrect version of the Ownable library, which can potentially lead to the malfunction of all functions that rely on the onlyOwner
modifier.
The current implementation is using an non-upgradeable version of the Ownbale
library instead of the upgradeable version:
@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol.
A regular, non-upgradeable Ownbale
library will make the deployer the default owner in the constructor. Due to a requirement of the proxy-based upgradeability system, no constructors can be used in upgradeable contracts. Therefore, there will be no owner when the contract is deployed as a proxy contract.
Malicious actors could exploit this vulnerability to manipulate contract behavior or drain funds.
Manual Review
Use
@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.sol
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.