The timelock duration is calculated exclusively from the value (ETH amount) of a proposed transaction. Transactions with value < 1 ETH are categorized as low-risk and are therefore executable without any delay once the 3-signer quorum is met. The contract does not evaluate the economic or security impact of the calldata, meaning external calls that move large amounts of value (ERC20 transfers, approvals, internal ETH forwarding, upgrades) are treated as low-risk when value == 0. This design flaw allows high-impact actions to be executed immediately, bypassing the intended protection of the dynamic timelock.
Likelihood:
The issue occurs whenever a signer proposes a transaction with value = 0 and non-empty calldata, which is a standard pattern for interacting with ERC20 tokens and external contracts.
Any group of 3 authorized signers can propose, confirm, and execute such a transaction without delay, making the scenario realistic in normal governance operation.
Impact:
Unlimited token approvals can be granted to attacker-controlled addresses.
High-value ERC20 token balances held by the wallet can be instantly drained.
This transaction satisfies:
Minimum 3 confirmations
value < 1 ETH → zero timelock
Yet results in total loss of assets.
Previously, timelock delays were based only on ETH value, so transactions with no ETH but containing function calls could execute immediately.
The fix enforces a minimum delay for any transaction with calldata:
All external calls now respect a minimum delay.
Prevents attackers from bypassing governance using zero-value but high-risk function calls.
Strengthens overall timelock security without affecting normal ETH-based transactions.
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.