Rialto may not be able to cancel minipools created by contracts that cannot receive AVAX #623
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
fix security (sponsor)
Security related fix, should be fixed prior to launch
M-07
primary issue
Highest quality submission among a set of duplicates
selected for report
This submission will be included/highlighted in the audit report
sponsor confirmed
Sponsor agrees this is a problem and intends to fix it (OK to use w/ "disagree with severity")
Lines of code
https://github.com/code-423n4/2022-12-gogopool/blob/aec9928d8bdce8a5a4efe45f54c39d4fc7313731/contracts/contract/MinipoolManager.sol#L664
Vulnerability details
Impact
A malicious node operator may create a minipool that cannot be cancelled.
Proof of Concept
Rialto may cancel a minipool by calling cancelMinipoolByMultisig, however the function sends AVAX to the minipool owner, and the owner may block receiving of AVAX, causing the call to
cancelMinipoolByMultisig
to fail (MinipoolManager.sol#L664):The following PoC demonstrates how calls to
cancelMinipoolByMultisig
can be blocked:Tools Used
Manual review
Recommended Mitigation Steps
Consider using the Pull over Push pattern to return AVAX to owners of minipools that are canceled by Rialto.
The text was updated successfully, but these errors were encountered: