In the One World project, if a user breaks the terms and conditions, a proposal can be passed to remove that user from the DAO, if it receives enough votes in favor. The removal process uses the MembershipERC1155::burnBatch() or MembershipERC1155::burnBatchMultiple() function, which effectively removes all membership tokens held by the user.
However, the current implementation has a flaw: the user can rejoin the same DAO after his removed, simply by purchasing a new membership token through the MembershipFactory::joinDAO() function. This allows users who have been removed to bypass their removal by acquiring membership again. Ideally, the system should prevent users from rejoining the DAO once removed.
This vulnerability undermines the effectiveness of the DAO’s membership removal process. Users who are removed for violations can easily rejoin, which could lead to repeated rule-breaking and diminish the integrity of the DAO’s community governance.
A user is removed from the DAO by passing a proposal that invokes MembershipERC1155::burnBatch()
, effectively burning their membership tokens.
The removed user then calls MembershipFactory::joinDAO()
, allowing them to repurchase a membership token and rejoin the DAO without restriction.
Implement a mechanism to track removed users and prevent them from rejoining the DAO. This could involve maintaining a blacklist of addresses that are blocked from using joinDAO()
after being removed.
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.