Project

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

Lack of Emergency Pause Mechanism Across Protocol

Summary

The protocol lacks an emergency pause mechanism across all core contracts (MembershipFactory, OWPIdentity, CurrencyManager), making it impossible to halt operations during critical security incidents or when vulnerabilities are discovered. This creates a significant security risk as there's no way to prevent exploitation while fixes are being developed.

Vulnerability Details

The core contracts lack any pause functionality:
// MembershipFactory.sol
contract MembershipFactory {
function createNewDAOMembership(...) external {
// No pause check
}
function joinDAO(...) external {
// No pause check
}
}

// OWPIdentity.sol
contract OWPIdentity {
function mint(...) public onlyRole(MINTER_ROLE) {
// No pause check
}
function burn(...) public onlyRole(MINTER_ROLE) {
// No pause check
}
}

// CurrencyManager.sol
contract CurrencyManager {
function addCurrency(...) external {
// No pause check
}
function removeCurrency(...) external {
// No pause check
}
}

Impact

  • No ability to stop operations if vulnerabilities are discovered

  • Continuous exploitation possible during incident response

  • No emergency controls during critical updates

  • Financial losses cannot be prevented during active exploits

  • Potential for cascading failures across interconnected contracts

Tools Used

Manual Review

Recommendations

Implement OpenZeppelin's Pausable contract across all core contracts:

import "@openzeppelin/contracts/security/Pausable.sol";
contract MembershipFactory is Pausable {
function createNewDAOMembership(...) external whenNotPaused {
// Implementation
}
function pause() external onlyRole(ADMIN_ROLE) {
_pause();
}
function unpause() external onlyRole(ADMIN_ROLE) {
_unpause();
}
}
Updates

Lead Judging Commences

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

Support

FAQs

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