The _swapUnderlyingToAsset function in StrategyArb.sol & _swapUnderlyingToAsset uses block.timestamp as deadline parameter for interaction with AMM, miner can hold the txs until it becomes favorable for them.
The _swapUnderlyingToAsset function in StrategyArb.sol :
The The _swapUnderlyingToAsset function in StrategyOp.sol :
Deadlines are a helpful tool to make sure txn cannot be saved for later. Here block.timestamp is passed to a pool, therefore it will be valid whenever the miner chooses to include the txn in a block because there is no deadline expiration check. And block.timestamp will be the current timestamp at that moment. It can be more profitable for a miner to hold the txn, until the txn gets maximum slippage.
Similar issues :
Txn maybe held by a malevolent miner, which may be being done in order to free up capital to ensure that there are funds available to do operations to prevent a liquidation. I am keeping the severity medium as similar issues in the past have the same severity.
Manual review
Add deadline parameter to _swapUnderlyingToAsset function, and pass it along AMM calls.
Here is a good example of deadline check in UniswapV2, it uses a modifier for the deadline check and all function which require the check, the modifier is being used.
https://github.com/Uniswap/v2-periphery/blob/0335e8f7e1bd1e8d8329fd300aea2ef2f36dd19f/contracts/UniswapV2Router02.sol#L18-L21
https://github.com/Uniswap/v2-periphery/blob/0335e8f7e1bd1e8d8329fd300aea2ef2f36dd19f/contracts/UniswapV2Router02.sol#L61-L76
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.