Part 2

Zaros
PerpetualsDEXFoundrySolidity
70,000 USDC
View results
Submission Details
Severity: high
Invalid

[H-3] Unrestricted Proxy Upgrade Capability in MarketMakingEngine contract (Access Control + Centralization Risk)

Summary

The MarketMakingEngine inherits UpgradeBranch, which likely contains logic for upgrading contract implementations. If this branch lacks proper access control, an attacker could replace critical logic to drain funds or disrupt protocol operations

Vulnerability Details

Affected Code Structure:

abstract contract IMarketMakingEngine is UpgradeBranch, ... { }
contract MarketMakingEngine is RootProxy { ... }

Key Risk Factors:

  1. Inherited Upgrade Logic: The UpgradeBranch (not shown) may contain functions like upgradeImplementation() that lack proper access control.

  2. Proxy Initialization Risk: The RootProxy constructor initializes the proxy system but may not properly lock implementations post-deployment.

Exploit Scenario:

  1. Attacker gains temporary ownership (via social engineering or compromised key)

  2. Calls upgradeImplementation() to deploy malicious logic in CreditDelegationBranch

  3. Steals all delegated liquidity through manipulated functions

Impact

High Impact: Complete protocol control and fund theft

High Likelihood: Proxy upgrade attacks are common in modular architectures

Critical Risk: Chain-wide impact due to core protocol position

Tools Used

Manual code analysis

Proxy pattern

Recommendations

  1. Implement strict access control for upgrade functions:

modifier onlyGovernance() {
require(msg.sender == governanceAddress, "Unauthorized");
_;
}
function upgradeImplementation(address newImpl) external onlyGovernance { ... }
  1. Use TimelockController for upgrade delays

  2. Add implementation freeze after initial setup

Updates

Lead Judging Commences

inallhonesty Lead Judge 4 months ago
Submission Judgement Published
Invalidated
Reason: Lack of quality

Support

FAQs

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