In the SoulboundProfileNFT
contract, the blockProfile
function allows the owner to block a user's profile by burning their NFT. However, after the profile is burned, the blocked address can still mint a new profile. This makes the blockProfile
function ineffective, as it does not prevent a blocked user from creating a new profile.
The blockProfile
function burns the user's NFT, but it deletes the mapping of the user's profile from profileToToken
and the _profiles
mapping.
This allows the blocked user to later mint a new profile since the profileToToken[msg.sender] == 0
check is passed when they call mintProfile
.
The current implementation does not block the user from creating a new profile after being blocked, rendering the "block" feature ineffective.
Users who are blocked by the contract owner can circumvent the blocking mechanism by minting a new profile after their old profile is burned.
The purpose of the blockProfile
function, which is to prevent further use of the platform by a specific user, is compromised.
This leads to a potential abuse where a user can repeatedly mint new profiles even after being blocked.
Manual review
Add a Blocked User Tracking Mechanism: Implement a mapping to track blocked users, ensuring they cannot mint a new profile after being blocked. For example:
Likelihood: Low, any blocked users. Impact: High, not really blocked.
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.