EIP712Base's and NativeMetaTransaction's domain separator is set in the constructor which makes signatures generated from it vulnerable to replay attacks during a hardfork. As per EIP712, calculating the domain separator using a hardcoded chainId could pose problems as a hardfork changes the chain's chain id, the domain separator will be inaccurately calculated.
NativeMetaTransaction is EIP712Base which sets the domain seperator in the constructor.
This sets the domain seperator which can no longer be changed.
The cached domainSeperator is then used to derive the message hash in the toTypedMessageHash function.
This will have an effect on signature verification as it can be replayed to execute meta transactions.
In case of a hardfork, signatures are vulnerable to replays.
Manual Review
Calculate the domain separator everytime its needed rather than using the cached domainSeperator parameter.
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.