The claim() function allows users to specify total_amount, which is used to calculate the vested amount. Since total_amount is not validated against the Merkle tree data, a malicious user can input an inflated value, claiming more tokens than they should
The function claim() takes total_amount as a parameter:
The issue is that total_amount is not validated against the on-chain Merkle root, allowing an attacker to pass an arbitrarily large total_amount and increase their vested balance.
Assume a legitimate user is entitled to claim 1000 tokens over time.
The attacker calls claim() with total_amount = 10_000 instead of 1000.
The _calculate_vested_amount() function calculates a much larger vested balance.
The attacker successfully claims more tokens than they should.
Attackers can drain the vesting contract by inflating their claimable amount.
This can result in unauthorized token distribution and financial losses for the project.
Manual review
Validate total_amount against the Merkle root to prevent manipulation:
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.