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.