Project

One World
NFTDeFi
15,000 USDC
View results
Submission Details
Severity: high
Invalid

Improper Membership Management Logic Leads to DAO Griefing Vulnerability

Summary

A vulnerability exists in the DAO membership system, allowing malicious users to grief DAO memberships by manipulating the tier upgrade mechanism. This flaw enables a griefer to hold exclusive control over the DAO, effectively reducing the DAO to a single-member entity. Furthermore, the griefer can exploit this position to receive a significant portion of subscription fees back.

Vulnerability Details

In MembershipFactory.sol, the joinDAO function is responsible for upgrading DAO memberships by burning two tokens from a lower tier and minting one token in a higher tier. However, while the function correctly increments the minted variable of the higher tier, it fails to decrement the minted variable of the lower tier by two. This oversight means that a malicious actor can repetitively exploit the upgrade mechanism to acquire DAO memberships at a reduced cost, bypassing standard limitations on lower-tier memberships.

This vulnerability can lead to a scenario where a malicious actor holds sole control over the DAO by being the only active member, thereby circumventing the intended multi-member governance structure.

Code Reference

function upgradeTier(address daoMembershipAddress, uint256 fromTierIndex) external {
require(daos[daoMembershipAddress].daoType == DAOType.SPONSORED, "Upgrade not allowed.");
require(daos[daoMembershipAddress].noOfTiers >= fromTierIndex + 1, "No higher tier available.");
IMembershipERC1155(daoMembershipAddress).burn(_msgSender(), fromTierIndex, 2);
IMembershipERC1155(daoMembershipAddress).mint(_msgSender(), fromTierIndex - 1, 1);
emit UserJoinedDAO(_msgSender(), daoMembershipAddress, fromTierIndex - 1);
}

Impact

This vulnerability allows an attacker to gain complete control over a DAO by exploiting the flawed upgrade mechanism. Once in control, the attacker can secure 80% of subscription fees as a solo member, significantly damaging DAO governance. This undermines trust in the DAO and diminishes its intended community-driven nature, possibly deterring other users from joining or participating in governance.

Tools Used

Manual Review

Recommended Mitigation

Update the upgradeTier function to correctly decrement the minted variable of the lower tier by two when two memberships are burned during the upgrade.

Updates

Lead Judging Commences

0xbrivan2 Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Known issue

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.