The ConfidencePoolFactory is a UUPS-upgradeable factory responsible for deploying new ConfidencePool clones, managing the pool implementation address, configuring the default moderator, allowlisting stake tokens, pausing/unpausing new pool creation, and authorizing future upgrades.
The factory inherits Ownable2StepUpgradeable, but does not override renounceOwnership(). As a result, the factory owner can permanently set owner() to address(0). Once ownership is renounced, every onlyOwner function becomes permanently inaccessible, including UUPS upgrades and all factory administration functions.
This is not documented as an accepted behavior in docs/DESIGN.md. The docs mention the factory owner is expected to authorize upgrades and manage protocol parameters, but they do not state that burning ownership is an intended or supported terminal state.
Likelihood:
This occurs when the factory owner calls the inherited renounceOwnership() function, either intentionally during decentralization or accidentally through operational error.
This is more likely because Ownable2StepUpgradeable may give a false sense that all ownership changes are protected by two-step acceptance, while renounceOwnership() remains a one-step irreversible action.
Impact:
The UUPS factory becomes permanently non-upgradeable because _authorizeUpgrade() is gated by onlyOwner.
Factory administration becomes permanently unavailable: the protocol can no longer update the pool implementation, default moderator, Safe Harbor registry, stake-token allowlist, or pause/unpause state.
Existing pools continue to operate, but future pool creation and maintenance can become partially or fully bricked. For example, a paused factory can never be unpaused after renouncement.
Place the PoC test at: 2026-07-bc-confidence-pools/test/unit/ConfidencePoolFactory.t.sol
Run via - forge test --match-test testPoC_renounceOwnershipPermanentlyDisablesFactoryAdmin --offline -vv
Disable ownership renouncement on the factory while preserving two-step ownership transfers.
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.
The contest is complete and the rewards are being distributed.