ConfidencePool::Ownable2Step and ConfidencePoolFactory::Ownable2StepUpgradeable manage the recovery address, expiry, scope, pausing, UUPS upgrades, and the stake-token allowlist through a single onlyOwner account, guarded by a two-step transfer so ownership is never lost by accident.
Neither contract overrides the inherited renounceOwnership(). It is public, callable by the owner, and sets the owner to address(0) in one step - bypassing the two-step guard. Afterward every onlyOwner function is permanently uncallable. Renounce while paused makes the pause permanent (staking / createPool dead forever) and a wrong recoveryAddress can never be corrected.
Likelihood (Low):
Occurs when the owner calls renounceOwnership() - a public, zero-arg, no-confirmation function on the same ABI as routine admin calls, fired by an operator mistake or a copy-pasted admin script.
Impact (Low):
Administration is irreversibly bricked: pause/unpause, setRecoveryAddress, setExpiry, setPoolScope on the pool; _authorizeUpgrade, setStakeTokenAllowed, setSafeHarborRegistry, createPool on the factory.
No staker principal is lost - withdraw/claim*/sweep*/claimExpired are neither owner- nor pause-gated - which bounds this to Low. But unlike every other admin lever (all reversible/backstopped), renounce removes all recovery paths at once with no counter-action from any address. Not covered by the docs: DESIGN.md/README.md never mention renounce, and §11's out-of-model carve-out is for deliberate trusted-entity sabotage, not an accidental irreversible foot-gun.
Self-contained: drop into test/ and run. PASSES against HEAD 58e8ba4 (no RPC). After pause() then renounceOwnership(), administration is permanently dead while a prior staker still recovers principal.
Override renounceOwnership() to revert on both contracts (two-step transfer still works):
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.