Description: The script is configured with 18 decimals in the amount, which will create an incorrect proof to use in the MerkleAirdrop::claim()
Impact: Due to the incorrect proof, no user would be able to claim the airdrop. This locks the money in the contract since there is no way to update the Merkle Root. At the same time, if a user knows, they could try to send the amount in 18 decimals (25_000_000_000_000), but if the contract doesn't have enough funds, the claim
would fail.
Proof of Concept:
Receive a proof created with the script makeMerkle.js
The user uses the MerkleAirdrop::claim()
function to redeem their airdrop with the received proof.
The claim is reverted because the amounts are different, making the proof invalid.
This test was added in MerkleAirdrop.t.test
Recommended Mitigation: They need to correct the script to generate proofs with the correct amount, and also create the mock token with 6 decimals to accurately simulate the USDC on the mainnet and thus realize the error.
In makeMerkle.js
In AirdropToken.sol
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.