In the processDepositCancellation() function, if self.depositCache.depositParams.token == address(self.WNT), there is a call to the user's address. If a malicious actor sets up a contract for the receiver that reverts, the execution will fail, yet the state will remain as Deposit. This will necessitate constant intervention by the protocol owners to resolve the situation.
No penalty is imposed on malicious actors who interact with this. Furthermore, the absence of the try/catch pattern, which the protocol employs in most similar functions, provides us with less information about the status and error, while maintaining the state in Deposit.
The potential need for the protocol to take drastic measures due to a state being stuck, which can occur with little to no penalty, is a concern that should be considered to ensure the protocol's robustness. Additionally, since the plan is to monitor failed events/tx with a sentinel and retry them, the unchanged status will also prevent automatic keepers from fixing this bug.
Manual Review
Add penalties for malicious actors as a punitive measure or consider an alternative method for claiming tokens, such as a two-step process that involves transferring them first to the vault. At the very least, implement a try-catch block to change the status to Deposit_Fail so that keepers are notified.
Impact: High Likelihood: High An attacker can repeatedly force the protocol to get stuck in a not-open status. This can happen on both deposit, withdraw callback for both successful execution and failures. Will group all similar issues.
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.