Staking.sol::claimRewards() timeInWeeksSinceLastClaim
is calculated incorrectly, which may result in token drain
The lastClaim of those without a soulmate is 0
Due to lastClaim being 0, it leads to a large erroneous value in reward calculation, enabling attackers to drain the entire vault
Add this test to StakingTest.t.sol
and run forge test --match-test test_DistortFirstCoupleMessage -vvvv
the issue
This can be repeated many times and finally, all tokens can be stolen
The attackers were able to drain the entire vault
manual review
Modify the token reward calculation mechanism to accurately track the staking duration of each token
High severity, as it allows any pending user to claim staking rewards without owning a soulmate NFT by - Obtaining love tokens on secondary markets - Transfer previously accrued love tokens via airdrops/rewards to another account and abusing the `deposit()` 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.