The updateDAOMembership function in MembershipFactory allows reducing the number of tiers without considering users in removed tiers. This can permanently block affected users from using the upgradeTier function, effectively trapping them in a non-existent tier with no upgrade path.
The issue exists in two connected parts:
In MembershipFactory.sol, tiers can be removed :
2.The upgradeTier function becomes unusable for affected users:
Example Attack Scenario:
DAO has 6 tiers (tier 0- tier 5)
User holds tokens in tier 5
EXTERNAL_CALLER reduces tiers to 4(tier 0- tier 3) via updateDAOMembership
User's tokens in tier 5 become trapped as upgradeTier will fail due to noOfTiers check
Users in removed tiers cannot upgrade their position
They lose tier mobility
This could affect user trust and protocol usability
No compensation mechanism exists for affected users
Manual code review
Provide compensation mechanism for affected users
or Prohibit removing tiers that have active token holders
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.