Multisig can be forcefully prevented from canceling the Minipool. #809
Labels
2 (Med Risk)
Assets not at direct risk, but function/availability of the protocol could be impacted or leak value
bug
Something isn't working
duplicate-623
fix security (sponsor)
Security related fix, should be fixed prior to launch
satisfactory
satisfies C4 submission criteria; eligible for awards
sponsor confirmed
Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
sponsor duplicate
Sponsor deemed duplicate
Lines of code
https://github.com/code-423n4/2022-12-gogopool/blob/main/contracts/contract/MinipoolManager.sol#L664
Vulnerability details
Impact
The
MinipoolManager._cancelMinipoolAndReturnFunds
function implements a push payment mechanism for ETH (AVAX) transfers. This function is internally called bycancelMinipoolByMultisig
function.A malicious contract which reverts on all plain ETH transfer can be used to prevent a multisig from canceling the Minipool. Since the Minipool now cannot move to
Canceled
state, the only state possible forward for the Minipool is theLaunched
state or just be in thePrelaunch
state forever. Both the scenarios are completed unintentional and unexpected for the MinipoolManager contract.Proof of Concept
Test case:
Tools Used
Manual review
Recommended Mitigation Steps
The
MinipoolManager._cancelMinipoolAndReturnFunds
should implement a pull payment mechanism in which the recipient itself has to come and trigger the payment transaction.The text was updated successfully, but these errors were encountered: