In TimelockController::executeBatch, the function executes multiple transactions in a single loop but reverts the entire batch if any single transaction fails. This creates a vulnerability where a malicious contract can intentionally revert to block the execution of all other legitimate transactions in the batch, effectively causing a denial of service.
The issue is particularly concerning because:
The operation is marked as executed before the loop starts
If any transaction fails, the entire batch fails
The operation cannot be retried since it's already marked as executed
All subsequent legitimate transactions are permanently blocked
Permanent Loss of Functionality: Since operations are marked as executed before actual execution, a failed batch cannot be retried.
Governance Disruption: Critical governance actions could be blocked if bundled with a malicious target.
Denial of Service: A malicious actor could intentionally include a failing contract to prevent execution of important protocol updates.
Time Loss: Failed batches require re-proposing and waiting through timelock periods again.
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.