The LikeRegistry contract contains a critical issue where the userBalances mapping is never updated when users send ETH via the likeUser function. As a result, all ETH sent remains stuck in the contract without a way to withdraw or transfer it.
All ETH sent by users remains locked within the contract since userBalances is never updated.
Users cannot retrieve their ETH, resulting in a financial loss.
The contract does not implement a way to utilize or distribute these funds, making them permanently inaccessible.
Deploy the LikeRegistry and SoulboundProfileNFT contracts.
Create two users (user and user2) and mint profile NFTs for them.
Have user send 2 ETH when calling likeUser(user2).
Check the contract balance and observe that it contains 2 ETH, while userBalances[user] remains 0.
The ETH is permanently locked inside the contract.
Modify the likeUser function to properly update userBalances when ETH is sent:
High: Funds are permanently locked with no way to retrieve them.
This vulnerability results in ETH being stuck in the contract, preventing users from reclaiming their funds. The recommended fix ensures that userBalances correctly tracks ETH sent, preventing the loss of funds.
Likelihood: High, always. Impact: High, loss of funds
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.