The [updateDAOMembership()
](https://github.com/Cyfrin/2024-11-one-world/blob/1e872c7ab393c380010a507398d4b4caca1ae32b/contracts/dao/MembershipFactory.sol#L100) contains a logical flaw in handling the minted
values when the new tierConfigs
array is longer than the existing dao.tiers
array. While the function attempts to preserve existing minted values, it only does so for indices that exist in the original array. Any additional tiers beyond the original length retain their input values, allowing to inject arbitrary minted
values which might cause a DOS attack and also allows minted values to start from a non 0.
This makes the tier permanently inaccessible as joinDAO()
will always revert
require(daos[daoMembershipAddress].tiers[tierIndex].amount > daos[daoMembershipAddress].tiers[tierIndex].minted, "Tier full.");
will always fail.
False representation of tier availability
POC
Manual
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.