stake.link

stake.link
DeFiHardhatBridge
27,500 USDC
View results
Submission Details
Severity: high
Invalid

RESDLTokenBridge::eth locked forever in contract.

Summary

Ether sent as fee through RESDLTokenBridge.sol contract to SDLPoolCCIPController.sol contract will be locked forever.

Vulnerability Details

There is no function to withdraw eth sent to SDLPoolCCIPController.sol contract, so when fee is collected in transferRESDL() of RESDLTokenBridge.sol contract the fee are sent to SDLPoolCCIPController contract by calling its ccipSend(). The ccipSend() is payable but there is no function by which owner can withdraw the eth. This eth will be used in another external function call in SDLPoolCCIPController contract but if somehow this call fails then the eth will be locked in the contract forever [this external call may fail, I have shown how in another report].

This line does that external call to SDLPoolCCIPController.sol contract:

messageId = sdlPoolCCIPController.ccipSend{value: fees}(_destinationChainSelector, evm2AnyMessage);

But there is not withdraw() in sdlPoolCCIPController.sol contract.

Impact

Ether sent to that contract will be permanently locked.

Tools Used

Manual analysis.

Recommendations

Add a withdraw() in sdlPoolCCIPController.sol contract.

Updates

Lead Judging Commences

0kage Lead Judge over 1 year ago
Submission Judgement Published
Invalidated
Reason: Incorrect statement

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.