Platform: Code4rena
Start Date: 18/02/2022
Pot Size: $125,000 USDC
Total HM: 13
Participants: 24
Period: 14 days
Judge: GalloDaSballo
Total Solo HM: 6
Id: 88
League: ETH
Rank: 5/24
Findings: 1
Award: $5,993.46
🌟 Selected for report: 1
🚀 Solo Findings: 1
🌟 Selected for report: hubble
If there are any unprocessed messages to be executed or processed, while removeConnectedChain is called, then they may be stuck from getting processed on the other end. If these messages have transactions for any token transfer then it will get stuck or lost.
Contract : MessageProxy.sol Line : 313
function removeConnectedChain(string memory schainName) public virtual override onlyChainConnector { bytes32 schainHash = keccak256(abi.encodePacked(schainName)); require(connectedChains[schainHash].inited, "Chain is not initialized"); delete connectedChains[schainHash]; }
Check if there are any pending or unprocessed messages while removeConnectedChain is called and revert in that case. Better to implement some functionality like pause just locally for the chain to be removed, before the actual removeConnectedChain is called.
#0 - DimaStebaev
2022-03-11T11:01:07Z
It duplicates #57
#1 - GalloDaSballo
2022-06-01T18:37:39Z
I don't believe this to be a duplicate.
I think the finding is valid in that because of the synchronicity of broadcasting messages, the chain could be removed before it receives all messages.
This is a risk that end users do face when interacting with the system and the only use case I could think of would be for a malicious admin to deny certain operations.
That said I don't believe there's any easy solution as this would have to be addressed at the meta level.
I do think the finding is valid and of medium severity