In case a user can't or doesn't want to receive native tokens (even as malicious behavior), the protocol stays in the Deposit
or Withdraw
status and the only way to change the status is the emergency procedures with full liquidity removal.
There is functionality for sending native token to untrusted addresses at the GMXDeposit
and GMXWithdraw
libs.
GMXDeposit.processDepositCancellation
:
GMXWithdraw.processWithdraw
:
In case of false
in these calls the protocol stays in the Deposit
or Withdraw
status and business functionality becomes blocked. Users can revert on all native tokens as malicious behavior.
The protocol functionality can be blocked.
Manual Review
Consider in case of success != true
wrapping native tokens and transferring them as usual instead of reveret.
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.