Skip to content
Request an audit

‹ All findings

BasicVault::_redeem() burns newAmount but redeems amount, allowing attackers to drain the vault

Crit/HighMitosis·Three Sigma · Cross-chain liquidity layer 1 · 25th June, 20243S-Mitosis-C01

Description

BasicVault::_redeem() is inconsistent as it burns newAmount, the value returned from the hook, but pushes a request to the redeem queue with amount.

As hook::reportRedeem() will cap the amount to redeem to the current load, the last user to withdraw may specify a huge amount to redeem, which will be capped to the remaining load, burning the capped newAmount shares, but pushing a request with the huge amount.

Recommendation

uint256 requestId = $v2.redeemQueue.push(_msgSender(), newAmount);

Status

Addressed in #69d1369.