The BaseGauge
contract inherits the pause functionality from Openzeppelin's Pausable
contract. However, the whenNotPaused
modifier that comes with this is not applied to functions that critically require it therefore exposing the protocol to more to risk during emergencies.
The whenNotPaused
modifier is used only in the voteDirection()
and getReward()
functions:
However, the withdraw()
function that allow users to withdraw staked tokens is not protected by the pausing mechanism.
By not restricting withdrawals during a pause, users can still interact with the contract in ways that may not be intended during a paused state, i.e. During an emergency, the contract cannot be fully paused to protect funds and prevent unauthorized transactions.
Manual Review
Enforce pausability during withdrawals:
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.