There are two invariants for locking up amounts :
Maximum locked up amount for single position shouldn't be more than a specified threshold : 10_000_000e18
Maximum locked up amount for cumulative position shouldn't be more than a specified threshold : MAX_TOTAL_LOCKED_AMOUNT
However its not enforced when the user tries to increase his position amount.
This is the increase() function in the veRAACToken which is used by the user to increase their position :
There is no validation in the external function above, and it calls an underlying function. The underlying code of _lockState.increaseLock has the code written for which is validating totalLocked amount, however it's commented out :
Attack scenario:
Suppose that totalLocked amount is already 999_900_000e18
Attacker increase their position by 10_000_000e18
totalLocked will surpass 1_000_000_000e18
Break the invariant of 1 billion reserve
Manual Review
Uncomment the code to perform the validation
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.