Root Cause:
The core issue is that the blockProfile function merely burns the user’s NFT and deletes the profile data, but it does not record the fact that an address has been blocked. There is no separate blacklist mapping or persistent ban flag to prevent a user from re-registering.
Impact:
If the goal is to permanently exclude certain users from the platform, then a malicious or misbehaving user who has been “blocked” can simply call mintProfile again and regain access. This undermines any administrative intent to permanently prevent a user from participating.
Recommendation:
Introduce a dedicated blacklist (or banned addresses mapping) that is checked in the mintProfile function (and possibly in other key functions). For example, adding a mapping such as mapping(address => bool) public isBlocked; and then modifying mintProfile to revert if isBlocked[msg.sender] is true will ensure that blocked users cannot simply re-create their profiles. Additionally, the blockProfile function should update this blacklist so that the blocked state persists beyond the deletion of the NFT.
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.