Since _MESSAGE_TYPEHASH
is the hash of struct BiconomyNexusMessage(bytes32 hash)
which doesn't have any nonce and expiry time parameter. Neither _domainSeparator
has any nonce parameter. And no nonces mapping is maintained inside contract for signer. So without nonce the signature can be easily replayed.
Without expiry time sig. can be valid for indefinitely.
https://github.com/Cyfrin/2024-07-biconomy/blob/main/contracts/Nexus.sol#L367C4-L369C6
Signature can be replayed or can be used for time.
Manual Review
Add nonce and expiry time parameters in hashStruct.
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.