The protocol freezes several sponsor-controlled parameters after user reliance begins. For example, expiry becomes immutable after the first stake and the pool scope permanently locks once the risk window is observed. These restrictions prevent the sponsor from changing economically significant pool parameters after users have committed capital.
However, recoveryAddress remains mutable for the entire lifetime of the pool. The owner can update it at any time through setRecoveryAddress(), while all recovery functions read the current storage value when transferring funds. As a result, the destination of CORRUPTED recoveries can be changed even after withdrawals have become permanently unavailable and after the outcome has been determined.
Likelihood:
The owner retains permission to update recoveryAddress throughout the pool lifecycle, including after withdrawals are permanently disabled.
Recovery transfers resolve the destination using the live storage value instead of a value committed before users became locked into the pool.
Impact:
The destination of CORRUPTED recovery funds can change after users have irreversibly committed to the pool.
This leaves recoveryAddress as the only economically significant sponsor-controlled parameter that remains mutable after the protocol otherwise narrows sponsor authority.
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.