Summary
The principal has the ability to continuously call graduateAndUpgrade, which will cause the remaining funds in the contract to be drained, and the principal will receive all of these funds!
Vulnerability Details
Vulnerability 1:
After graduateAndUpgrade is called, the bursary state variable remains unchanged and is not reduced.
Vulnerability 2:
Impact
Combining Vulnerability 1 and Vulnerability 2 will allow the principal to receive 100% of the total funds, draining the remaining funds in the contract after the first call!
POC
Not written.
Recommendations
Add a mutex lock.
This function should only be callable once per semester.
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.