In MerkleAirdrop::claim()
function, the MerkleProof.verify
function is incorrectly used, making merkle proof verification insecure.
The MerkleProof.verify
function is used to verify the merkle proof. However, this verifies the proof against the raw calldata, which is insecure.
Because MerkleProof.verify is used instead of MerkleProof.verifyCalldata, the merkle proofs can be forged, allowing attackers to claim airdropped tokens they are not entitled to.
Manual review, docs
Replace the use of MerkleProof.verify
with MerkleProof.verifyCalldata
in MerkleAirdrop.sol
lines 35 to properly verify proofs against a hash of the calldata.
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.