Scope
src/MultiSigTimelock.sol: proposeTransaction, s_transactions, s_transactionCount
Normal behavior: Proposals should be rate-limited or purgeable.
Issue: Anyone controlling the owner key can spam unbounded proposals. Each entry is stored permanently with calldata, bloating storage, raising gas for executeTransaction (due to higher cold SLOAD costs) and making indexers/dashboards unusable.
Likelihood:
Reason 1 // Owner key compromise enables griefing
Reason 2 // Even honest use can accidentally enqueue thousands of drafts
Impact:
Impact 1 // Contract becomes prohibitively expensive to interact with as storage grows
Impact 2 // Off-chain review pipelines choke, increasing chance of signing malicious items hidden in noise
Explanation: Script 50,000 proposals with dummy calldata. Gas to confirm/execute later transactions rises because every s_transactions slot becomes a cold access, and forensic review becomes impractical.
Explanation: Add per-interval proposal caps and a cancel/cleanup path that deletes storage (e.g., via delete s_transactions[id]) to reclaim gas refunds.
Status: Valid (DoS)
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.