Status Close is not a final, one way action, even though it should be according to the specification. This enables a reopening of the vault even though it has been closed or a temporary DOS of withdrawals due to a keeper setting the state to Pause
The function GMXEmergency#emergencyPause can be called regardless of the state that the contract is in:
So even though it is stated in the docs that emergencyClose is a one-way irreversible action and meant to close [the] vault for good (Link). The status could be set to Paused and then Open again through the pause-resume flow (emergencyPause -> emergencyResume -> processEmergencyResume).
A vault can be reopened even though it should not be able to. Due to the repayment of borrowed funds after closing, this would remove all leverage from the vault. Additionally, a malicious keeper could cause a temporary DOS by setting the state to Pause, as emergencyWithdrawals can only happen when closed.
Manual Review
Dont allow emergencyPause to be called for any state
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.