The TimelockController
contract implements emergency actions that can be executed immediately after scheduling, bypassing the documented 1-day delay period (EMERGENCY_DELAY
).
While the contract defines EMERGENCY_DELAY = 1 days
, this delay is never enforced in the scheduleEmergencyAction()
and executeEmergencyAction()
functions.
This issue contradicts the protocol's documentation and security design, which states that emergency actions should have a 1-day delay. The immediate execution capability removes an important security safeguard meant to protect against malicious or compromised admin actions.
Emergency actions can be executed instantly without any time delay
Bypasses the intended 1-day cooling period for emergency actions
Removes the ability for users to react to potentially malicious emergency actions
Compromised admin could make immediate critical changes to the protocol
Violates the principle of time-delayed governance actions
Manual review
The following test case already exists in the test/unit/core/governance/proposals/TimelockController.test.js
file:
Modify the executeEmergencyAction
function to enforce the EMERGENCY_DELAY
and modify the _emergencyActions
mapping to also store timestamps.
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.