58497 sc low the amount of weth redeemed is not calculated properly in morphoyearnogweth
Description
Brief/Intro
Vulnerability Details
function _deallocate(uint256 amount) internal override returns (uint256) {
@-> vault.withdraw(amount, address(this), address(this));
@-> uint256 wethBalanceBefore = TokenUtils.safeBalanceOf(address(weth), address(this));
@-> uint256 wethBalanceAfter = TokenUtils.safeBalanceOf(address(weth), address(this));
@-> uint256 wethRedeemed = wethBalanceAfter - wethBalanceBefore;
if (wethRedeemed < amount) {
emit StrategyDeallocationLoss("Strategy deallocation loss.", amount, wethRedeemed);
}
require(wethRedeemed + wethBalanceBefore >= amount, "Strategy balance is less than the amount needed");
require(TokenUtils.safeBalanceOf(address(weth), address(this)) >= amount, "Strategy balance is less than the amount needed");
TokenUtils.safeApprove(address(weth), msg.sender, amount);
return amount;
}
Impact Details
References
Proof of Concept
Proof of Concept
Previous57394 sc low acceptadminownership only allows the current admin to finalise transfersNext56517 sc low zeroxswapverifier validates struct but executes external actions enabling direct fund theft
Was this helpful?