Contract reentrant call while state is inconsistent possibility
In GMXWithdraw.processWithdraw
, self.withdrawCache.user
is called back in self.withdrawCache.user.call{value: address(this).balance}("")
after updated state:
If self.withdrawCache.user
is a contract with receive function it can call contract back while it has inconsistent state
Function GMXWithdraw.processWithdraw
with reentrancy can be called through external function with no nonReentrant modifier GMXVault.processWithdraw
Contract call while state is inconsistent possibility
Do not call user back when state is inconsistent, add nonReentrant modifier for functions can be affected by reentrancy
Impact: High Likelihood: Low The only possible external caller is the keepers. But this is still a vulnerability and it is strongly recommended to implement CEI pattern. Given the limited impact, similar issues (reentrancy by keepers) are grouped.
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.