Project

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

Centralized Proxy Control in DAO Factory

Summary

The MembershipFactory uses a single ProxyAdmin controlled by the factory deployer for all DAOs, creating a centralized control point that undermines DAO autonomy and decentralization principles.

Vulnerability Details

In the current implementation:

constructor(...) {
proxyAdmin = new ProxyAdmin(msg.sender); // Single admin for all DAOs
}
function createNewDAOMembership(...) external returns (address) {
TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
membershipImplementation,
address(proxyAdmin), // Every DAO uses same ProxyAdmin
abi.encodeWithSignature(...)
);
}
function updateMembershipImplementation(address newImplementation) external onlyRole(DEFAULT_ADMIN_ROLE) {
membershipImplementation = newImplementation; // Can force upgrade all DAOs
}

This design means all DAOs share a single upgrade controller owned by the factory deployer, preventing individual governance and creating a central point of control.

Impact

  • Factory admin can force-upgrade all DAOs simultaneously

  • DAO creators have no control over their own upgrades

  • Single point of failure if admin keys are compromised

  • Violation of DAO autonomy and decentralization principles

Tools Used

  • Manual code review

Recommendations

Implement individual ProxyAdmin for each DAO:

function createNewDAOMembership(...) external returns (address) {
ProxyAdmin daoProxyAdmin = new ProxyAdmin(_msgSender());
TransparentUpgradeableProxy proxy = new TransparentUpgradeableProxy(
membershipImplementation,
address(daoProxyAdmin),
abi.encodeWithSignature(...)
);
return address(proxy);
}

This ensures each DAO has independent upgrade control and maintains true decentralization.

Updates

Lead Judging Commences

0xbrivan2 Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Design choice
0xbrivan2 Lead Judge 7 months ago
Submission Judgement Published
Invalidated
Reason: Design choice

Support

FAQs

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