The _deployFunds and _freeFunds functions in the StrategyOp contract do not validate the operational state of the transmuter contract. If the transmuter is paused or malfunctioning, these functions will revert, disrupting fund deployments and withdrawals. Although user funds remain secure, this can lead to delayed access and missed yield opportunities, undermining the strategy's reliability.
The StrategyOp contract relies on the transmuter for key functionalities, such as deploying funds and freeing funds for withdrawal. However, there are no checks for the transmuter's state (e.g., paused or in maintenance) before invoking critical calls like transmuter.deposit and transmuter.withdraw.
If the transmuter is paused:
Deposits via _deployFunds will fail, leaving funds idle and unutilized.
Withdrawals via _freeFunds will revert, preventing users from accessing their assets
**In _deployFunds: **No check is made for the transmuter’s state before calling transmuter.deposit.
**In _freeFunds: **No validation is performed before calling transmuter.withdraw.
The function assumes transmuter.withdraw will always execute successfully. If the transmuter is paused, this will revert.
The lack of transmuter state checks can cause significant disruptions:
Failed Withdrawals: Users cannot withdraw funds during transmuter downtime, leading to frustration and delays.
Inoperable Strategy: Core functions like fund deployment and withdrawals will fail, leaving the strategy temporarily non-functional.
Missed Yield Opportunities: When the transmuter is paused, funds intended for yield generation will remain inactive, preventing users from earning returns.
Although user funds remain secure, these issues delay access to assets, disrupt operations, and may erode user confidence in the protocol.
Manual code review
**Add Transmuter State Validation: **Implement a function to check the transmuter's operational state, such as paused.
Example:
**Guard Transmuter Interactions: **Validate the transmuter state before calling any critical functions.
Example for _deployFunds:
**Introduce Emergency Pausing Logic: **Add functionality to pause the strategy when the transmuter is non-operational to prevent reverts. This will ensure better operational continuity.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.