The createTradingAccountAndMulticall function in TradingAccountBranch.sol is made payable but does not handle the msg.value that can be sent along with the call. This can result in funds being stuck in the contract with no way to withdraw them, posing a significant risk of loss of funds.
The createTradingAccountAndMulticall function allows for the creation of a trading account and multiple calls to be executed in a single transaction. Although the function is marked as payable, it does not process or forward the msg.value received, leading to the potential for funds to be trapped within the contract.
Since none of the functions within the contract require ETH to be sent, and all delegate calls will still be made back to the contract itself, this risk of funds getting stuck is significant. The contract does not have a mechanism to handle the received ETH, which increases the likelihood of funds becoming irretrievable.
The vulnerability allows funds sent to the createTradingAccountAndMulticall function to become stuck in the contract. Since there is no mechanism to withdraw these funds, users could lose their ETH without any means of recovery. This can affect user trust and the financial stability of the platform.
Manual review
Handle msg.value Appropriately: Ensure the function either processes the received ETH or forwards it to a designated address to avoid trapping funds.
Add Withdrawal Mechanism: Implement a function to allow the withdrawal of any ETH mistakenly sent to the contract.
The contest is live. Earn rewards by submitting a finding.
This is your time to appeal against judgements on your submissions.
Appeals are being carefully reviewed by our judges.