Airdrop::claim
allows unpaired participants, specifically those who have initiated the minting process but are not yet paired with a soulmate, to illegitimately access and claim love token rewards from the Airdrop Vault. This issue stems from a lack of adequate validation in the claim process, particularly failing to account for the state where soulmateContract.idToCreationTimestamp(soulmateContract.ownerToId(msg.sender))
returns zero, indicative of a user in a waiting state for pairing. This loophole can lead to significant unauthorized claims, undermining the fairness and integrity of the reward distribution framework.
Airdrop::claim
fails to account for users in a "waiting" state, identifiable when soulmateContract.idToCreationTimestamp(soulmateContract.ownerToId(msg.sender))
returns zero. The protocol's logic intends for only paired users to access these rewards; however, due to this oversight, any user who has merely initiated a minting request can exploit this loophole to claim rewards, bypassing the intended eligibility criteria.
Proof of code:
Unauthorized claims by unpaired users can lead to the depletion of resources in the Airdrop Vault, intended for legitimately paired users, undermining trust in the protocol's governance and potentially destabilizing its economic model
Manual review.
Implement an appropriate check in Airdrop::claim
as follows:
High severity, This issue is separated from the flawed `isDivorced()` check presented in issue #168 as even if that is fixed, if ownership is not checked, isDivorced would still default to false and allow bypass to claim airdrops by posing as tokenId 0 in turn resulting in this [important check for token claim is bypassed.](https://github.com/Cyfrin/2024-02-soulmate/blob/b3f9227942ffd5c443ce6bccaa980fea0304c38f/src/Airdrop.sol#L61-L66). #220 is the most comprehensive issue as it correctly recognizes both issues existing within the same function.
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.