The structHash calculation in the fillOffchainOrders
Function is missing the chain ID
, exposing the protocol to cross-chain replay attacks. Given Zaros Protocol's plan to launch on both Arbitrum and Monad chains, this vulnerability is critical.
The vulnerability is in the SettlementBranch contract, specifically within the fillOffchainOrders
function. The relevant code snippet is:
The structHash calculation is missing the chain ID (block.chainid)
. This omission makes the contract vulnerable to cross-chain replay attacks. A replay attack occurs when a valid transaction executed on one blockchain is maliciously or fraudulently repeated on another blockchain.
Severity: Medium
Potential Consequences:
Unauthorized transactions on different chains.
Loss of funds and integrity of the protocol.
Manual Review
Include Chain ID in structHash:
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.