On claim
function, there are no check whether eligible user already claimed or not, so this is can be abused by single eligible address to claim multiple times and drained the USDC
balance on the contract.
The claim
function only check sufficient FEE
and Merkle Proof:
this is not sufficient because eligible user can claim multiple times.
add the following code to MerkleAirdropTest.t.sol
:
then run the following command forge test --zksync --mt testUserCanClaimMultipleTimes
the result of test should be PASS:
Eligible user can claim multiple times, this is problematic because the intended way is every user can only claim 25 USDC
each.
manual review and foundry
implement mapping where it track if user already claimed.
add the following line to MerkleAirdrop.sol
.
MerkleAirdrop.sol
:
after that run the test using forge test --zksync --mt testUserCanClaimMultipleTimes
the result should FAIL:
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.