Note: This finding assumes the codebase is corrected and the DAOConfig struct is updated every time a tier upgrade is performed.
The current upgrade mechanism for memberships involves burning two tokens from a lower tier to mint one in the next higher tier. However, if the higher tier is already fully minted or has not been configured, it becomes impossible to upgrade memberships from the lower tier.
A lower-tier membership may not be upgradeable if the target higher tier is already full or has no configuration. This limitation can create an unintended bottleneck where users are unable to upgrade, even if they meet the requirements, due to restrictions in the target tier.
In the following PoC created using Foundry, Tier 5 is intentionally left unset. When Alice attempts to upgrade her membership from Tier 6, the upgrade fails due to the maximum capacity limit for Tier 5.
To enable this PoC, add the following check in MembershipFactory::upgradeTier
:
Manual review.
Allow users to upgrade to any higher tier, adjusting in the function the ratio burn/mint depending on the target tier.
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.