Ensuro Strategy Vault

QuantstampRepository at commit bc7bfa8

Quantstamp reviewed Ensuro Strategy Vault on 17 Mar 2025: 7 findings, 0 critical; 4 marked fixed, 3 acknowledged.

No open critical findings
Open the reportOpen Ensuro Strategy Vault’s security record

Report hosted on certificate.quantstamp.com.

Trustblock does not review code.

Findings7

Statuses are the security firm’s own, from its report.

SeverityOpenAcknowledgedFixed
Critical000
High000
Medium000
Low034
Low`_maxWithdrawable()` and `_maxDepositable()` May OverflowFixed

The function `_maxWithdrawable()` sums up the maximum withdrawal amount of each strategy related to the vault and returns the sum up to a `limit`. However, depending on the strategies, the sum may evaluate to greater than `type(uint256).max` before a `return` statement is reached, resulting in the function reverting. The same principle applies to `_maxDepositable()` which is implemented similarly.

Low`CompoundV3InvestStrategy.disconnect()` Ignores Claimable RewardsFixed

In the `CompoundV3InvestStrategy.disconnect()` function, the logic verifies that the `cToken` balance is zero before allowing a disconnect. However, the function does not account for any claimable rewards that may be pending in the rewards manager, potentially leaving yield unclaimed.

LowInconsistent and Collidable Selector Generation for Strategy ForwardingFixed

In the `getForwardToStrategySelector()` function, the selector for forwarding calls to strategies is constructed using a combination of the strategy index, method ID, and the first four bytes of the strategy’s address. This approach introduces two key issues: 1. Potential Collisions: The use of XOR to combine truncated values is not a secure method of generating unique identifiers. XOR operations are commutative and linear, meaning different combinations of inputs can result in identical outputs, leading to unintended access control overlaps. 2. Selector Instability: Since the strategy index is included in the selector, any change to the order of strategies in the `_strategies` array will change the computed selector. This means that modifying the strategy list (such as calling `MSVBase.removeStrategy()`) will require resetting access control permissions, leading to operational friction and potential misconfigurations.

LowInconsistent Use of the `force` in `MSVBase.removeStrategy()`Fixed

In the `MSVBase.removeStrategy()` function, there is an early check that reverts if `strategy.totalAssets() != 0` without considering the `force` parameter. The function should allow removal by letting the strategy handle asset checks in `strategy.dcDisconnect(force)`.

Contracts in scope

No deployed address is recorded for this audit.

The report names a repository or files. Open the report to see its scope.

Repository and files the report names (11)

  • https://github.com/ensuro/vaults/contracts/OutflowLimitedAMMSV.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/AccessManagedMSV.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/interfaces/IInvestStrategy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/SwapStableAaveV3InvestStrategy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/InvestStrategyClient.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/SwapStableInvestStrategy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/AaveV3InvestStrategy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/AccessManagedProxy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/CompoundV3InvestStrategy.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/MSVBase.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3
  • https://github.com/ensuro/vaults/contracts/interfaces/IExposeStorage.sol at commit bc7bfa872901f90d6e3e2034e5bb82e9b7918ad3

Part of Ensuro Strategy Vault’s security record

Ensuro Strategy Vault
Audits1 audit by 1 firmLast audit Mar 2025, by Quantstamp.
Critical findingsNo open critical findingsIn 1 report.
Open Ensuro Strategy Vault’s security record

Security firm

Quantstamp

236 projects reviewed · 332 reports · latest Oct 2026

See Quantstamp’s audits

Something wrong on this page? A missing report, a wrong date, a finding that was fixed since. Tell us and we check it against its source.

Tell us