The StabilityPool.sol
contract is meant to be upgradable, but it initializes an immutable variable _initialOwner
through the constructor.As proxies never calls the constructor, this variable remains uninitialized and is passed through the contracts initialize()
function where it initializes the owner __Ownable_init(_initialOwner)
.
https://github.com/Cyfrin/2025-02-raac/blob/89ccb062e2b175374d40d824263a4c0b601bcb7f/contracts/core/pools/StabilityPool/StabilityPool.sol#L59
manual review
use _disableInitializers()
inside the constructor.
move the initialization of the owner to the initialize()
function and change the private immutable _initialOwner
to a private initialOwner
variable.
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.