The MembershipFactory::updateDAOMembership
function allows external callers to update the membership parameters of a DAO, including limits on the maximum number of members. Although this function correctly checks that the total member count does not exceed the maximum allowed, it fails to enforce this restriction at the tier level. As a result, it is possible to lower the maximum member count for a specific tier to a value below the current number of members in that tier, which can lead to an invalid state.
This vulnerability allows DAOs to retain more members in a specific tier than the newly configured limit permits. Specifically, if a tier has already reached or exceeded the new maximum member limit after the update, the function does not prevent the configuration change, allowing an inconsistency between the allowed and actual member count.
The PoC below demonstrates an exploit scenario in which 10 users mint memberships in tier 6. Subsequently, the maximum member count for this tier is reduced to half the original amount. Under the updated configuration, the number of current members would exceed the allowed limit, creating an inconsistency that could disrupt DAO governance or violate expected membership constraints.
Manual review
Check in each tier whether the new set amount is exceeded by the minted memberships and revert if that's the case.
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.