The owner is expected to be able to permanently block malicious users by calling blockProfile(), which burns their NFT and removes their profile.
blockProfile() deletes profileToToken[user], setting it to 0. However, mintProfile() checks require(profileToToken[msg.sender] == 0) -- the exact post-deletion state. A blocked user can call mintProfile() immediately to re-enter the system, completely nullifying the admin action.
Likelihood:
This occurs every time the owner attempts to block a user -- the blocked user can re-register in the very next block
No additional conditions or costs are required beyond the gas fee for calling mintProfile()
Impact:
The admin blocking mechanism is completely non-functional -- blocked users can immediately rejoin
Malicious users cannot be permanently removed from the protocol
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.