The NativeMetaTransaction
contract's implementation of EIP-712 domain separation omits critical parameters (chainId and verifyingContract) from its domain separator, leaving meta-transactions vulnerable to cross-chain and cross-contract replay attacks.
Current Implementation:
The constructor only passes name
and version
, omitting chainId
and verifyingContract
which are crucial for replay protection.
The implementation initializes EIP-712
with minimal domain separator parameters, excluding key fields that provide additional security guarantees. The domain separator is essential for preventing signature replay attacks across different contexts, but its current implementation lacks sufficient context binding.
Meta-transaction signatures can be replayed across different blockchain networks i.e a signature created on mainnet could be reused on testnets or other EVM chains. Signatures can be reused across different deployments of the same contract which could affect multiple instances of the protocol across the same chain.
Manual Review
Include these fields too:
Base Contract Modification:
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.