The contract incorrectly wraps the chainId as bytes32, rather than using it in its native integer format as specified in the EIP-712 standard. According to EIP-712, the chainId should be directly used as a uint256, not converted to bytes32. This misrepresentation of chainId can lead to compatibility issues and potential security concerns when verifying the source and integrity of transactions.
In EIP-712, the chainId is expected to be represented as a uint256 integer type, which corresponds to the chain ID where the transaction is executed.
The incorrect type for chainId may open the contract to risks of cross-chain replay attacks. Since chainId is essential for ensuring that messages and signatures are unique to a particular blockchain, using bytes32 instead of uint256 weakens this guarantee, potentially allowing messages signed on one chain to be replayed on another.
Manual Review
Modify the contract to use chainId directly as a uint256 without wrapping it in bytes32.
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.