The claim()
function allows anyone to call it on behalf of any user, without any access control. This means that an attacker can claim tokens on behalf of another user, potentially interfering with the vesting process.
In the claim()
function:
There is no access control in place, meaning anyone can call claim(user, total_amount, proof)
, even if they are not the intended recipient. While the function ensures tokens are transferred to the correct user, an attacker can:
Front-run legitimate claims by submitting a claim for a user before they do.
Disrupt user experience by triggering claims at unintended times.
Potentially interfere with gas optimizations or batching mechanisms by claiming at inopportune times.
While the tokens are still sent to the correct user, this allows attackers to interfere with the expected user flow, execute front-running strategies, and create unnecessary network congestion.
Manual Review
Implement access control by ensuring that only the user themselves can call the claim()
function. Modify the function to enforce this restriction:
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.