The current implementation of the governance contract allows for queued proposals to be executed even after they have been canceled by governance. This oversight can lead to significant issues, as it undermines the intent of the cancellation process and can result in unwanted actions being executed.
Canceling Proposal Doesn't Cancel Timelock Operations: When a proposal is canceled, the corresponding timelock operation remains pending and can still be executed after the specified delay.
Queued Proposals Execute After Governance Cancellation: If a proposal is queued in the timelock and then canceled by governance, the timelock will still execute the proposal after the delay, leading to actions that were intended to be aborted.
A proposal is queued in the timelock.
Governance cancels the proposal.
The timelock still executes the proposal after the delay, despite the cancellation.
To address this vulnerability, the cancellation function should include logic to cancel any pending operations in the timelock when a proposal is canceled. This ensures that no actions are executed after a proposal has been canceled.
Here’s how the cancel
function could be modified to include this logic:
Implementing this change will ensure that queued proposals cannot be executed after they have been canceled by governance, thereby preserving the integrity of the governance process.
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.