https://github.com/Cyfrin/2024-11-one-world/blob/1e872c7ab393c380010a507398d4b4caca1ae32b/contracts/meta-transaction/EIP712Base.sol#L21-L38
The variable domainSeperator in EIP712Base is cached in the contract storage and will not change after the contract is initialized. However, if a hard fork happens after the contract deployment, the domainSeperator would become invalid on one of the forked chains due to the block.chainid has changed.
An attacker can exploit these vulnerabilities on the forked chain, as the invalid DOMAIN_SEPARATOR can lead to incorrect processing of signed messages.
Manual review.
Similar issue
https://github.com/code-423n4/2021-06-realitycards-findings/issues/166#issue-923661426
Consider using the EIP712.sol from OpenZeppelin, which recalculates the domain separator if the current block.chainid is not the cached chain ID.
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.