The veRAACToken::withdraw() function lacks the whenNotPaused
modifier that is present on other user-facing functions, allowing users to withdraw their RAAC tokens even when the contract is paused for emergency.
The contract implements a pausing mechanism for emergency situations, where all user interactions should be halted. This is enforced through the whenNotPaused
modifier on functions like lock()
, increase()
, and extend()
. However, the withdraw()
function is missing this critical modifier:
This oversight means that even when the contract is paused due to an emergency, users can still withdraw their tokens, potentially undermining the purpose of the emergency pause.
During an emergency pause meant to prevent any token movements, users can still withdraw their RAAC tokens
This could disrupt emergency response procedures
The pausing mechanism becomes partially ineffective as a security control
Add whenNotPaused modifier
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.