An incorrect message hash used in the SnowmanAirdrop contract will result in a mismatch with the off-chain signer and also lead to serious issues in EIP-712 signature verification
There are instances where data could be hashed incorrectly. The First instance includes a typo in SnowmanAirdrop::MESSAGE_TYPEHASH
and the second instance includes hashing Snowman::AirdropClaim
struct directly in Snowman::getMessagHash
function, which is not EIP712 compliant.
Likelihood:
This Vulnerability will occur when this contract interacts with off-chain components like a frontend asking users to sign a message, A backend, or a script that uses ethers.js
, viem
to generate a signature or third-party wallet (like MetaMask, Safe, Ledger) that signs structured data
Impact:
It can result in a potential fund lock or Denial of Service, where off-chain users with correct signatures can't claim
To adhere to EIP 712 standards, in SnowmanAirdrop::getMessageHash
function, the Protocol should ensure that each field in the struct is individually encoded, **not **the struct as a whole
Secondly, add the correct message type hash to SnowmanAirdrop::MESSAGE_TYPEHASH
A typo in the `MESSAGE_TYPEHASH` variable of the `SnowmanAirdrop` contract will prevent signature verification claims. Used `addres` instead of `address`
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.