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 about 1 year ago
Submission Judgement Published
Validated
Assigned finding tags:

Old router approval is not revoked after an update

inallhonesty Lead Judge about 1 year 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.

Give us feedback!