DeFiFoundrySolidity
16,653 OP
View results
Submission Details
Severity: low
Valid

Missing Emergency Router Removal Mechanism

Summary

The strategy contracts lack functionality to remove a compromised router and revoke its approvals in emergency situations, creating a critical gap in the emergency control system.

Vulnerability Details

In both StrategyMainnet.sol and StrategyArb.sol, there is no mechanism to:

  1. Remove a compromised router

  2. Revoke existing approvals

  3. Disable swapping functionality in emergencies

Current implementation only allows setting a new router:

function _initStrategy() internal {
router = ICurveRouterNG(0xF0d4c12A5768D806021F80a262B4d39d26C58b8D);
underlying.safeApprove(address(router), type(uint256).max);
}

The contract gives unlimited approval without any way to revoke it in emergencies.

Impact

  1. If router is compromised:

    • No way to quickly revoke approvals

    • Strategy's balance remains exposed to the compromised router

    • Must wait for governance to deploy new strategy

  2. Security risk:

    • Unlimited approval remains active

    • No emergency stop mechanism

    • Potential loss of funds if router is exploited

Tools Used

  • Manual review

Recommendations

This problem can be mitigated by adding a router removal functionality or a way to modify the router and revoke approvals.

  1. Add router removal functionality

  2. Modify router setting to handle approvals properly

Updates

Appeal created

inallhonesty Lead Judge 10 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Old router approval is not revoked after an update

inallhonesty Lead Judge 10 months ago
Submission Judgement Published
Validated
Assigned finding tags:

Old router approval is not revoked after an update

Support

FAQs

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