The EIP712_DOMAIN_TYPEHASH
defined in the EIP712Base
contract uses an incorrect type hash which does not match the format of data it is supposed to represent.
The EIP-712 standard specifies a domain separator format using the type hash for the following data structure:
However, in the current implementation:
The variable EIP712_DOMAIN_TYPEHASH
should conform to the correct structure as defined by the EIP-712 standard. The EIP712 Domain should include a uint256 chainId
instead of a fixed bytes32 salt
. The discrepancy is not just a minor oversight but a critical adherence issue that affects the integrity of the domain separator, leading to potential misuse or exploitation.
Signature Verification Failure: Because the type hash used in the domain separator does not match the required format, any off-chain signatures generated expect the domain to be compliant with EIP712Domain
will not match the calculated on-chain domain separator. As a result, all such signature verifications will fail.
Manual Review
Consider using openzeppelin's [EIP712](https://github.com/OpenZeppelin/openzeppelin-contracts/blob/v5.0.2/contracts/utils/cryptography/EIP712.sol)
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.