In this case, _claimedBy” is never set to true, so the claimant can issue call the function multiple times.
msg.senderdoes not have adequate restrictions. So ,
claim` function can be called called multiples times by the soulmates and it can ruin its functionality.
Airdrop
contract define aclaim()
function that is protected by a _claimedBy
However, In the above case, the modifier implementation is flawed as there isn’t any check for a require or revert,
the comparison will silently return false and let the execution continue:
Any account can claim tokens, any number of Lovetokens
.
This represents a critical issue as the Soulmate NFT token can be used to claim 1 LoveToken
per day. An attacker can freely claim Lovetokens
to steal all the rewards from it.
Manual Review
The modifier should require that the caller is the _claimedBy
in order to revert the call in case this condition doesn’t hold.
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.