The TimelockController::hashOperationBatch()
function directly hashes arrays using keccak256
without proper EIP-712 encoding, violating the specification and enabling transaction malleability.
The hashOperationBatch
function uses keccak256(abi.encode())
directly on arrays:
This violates EIP-712 which requires arrays to be encoded by hashing each element individually and then hashing the array of hashes. The current implementation allows different array representations to produce the same hash, enabling transaction malleability.
Transaction malleability: Different array representations can produce identical operation hashes
Potential front-running on scheduled operations
Non-compliance with EIP-712 standard reduces cross-platform compatibility
Manual review
Implement EIP-712 compliant array hashing:
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.