Description: As the name indicates graduateAndUpgrade
is meant to disburse wages to principal and teachers then upgrade the contract. But in this case the pricipal might think only calling the function graduateAndUpgrade will disburse the wages and upgrade the contract, or calling upgradeToAndCall function will disburse the wages and upgrade the protocol, but the function that upgrade the contract is in upgradeToAndCall
and graduateAndUpgrade
function that disburse the wages is not mentioned any where in upgradeToAndCall function.
Vulnerability Details: graduateAndUpgrade function is not called in upgradeToAndCall function
Impact: Not disbursing wages when upgradeToAndCall
function is called
Tools Used: Manual Review
Proof of Concept: there are two test that show the vulnerability
Add the UUPSUpgradable in LevelTwo contract to make this test suit work
Test suit that shows only calling upgradeToAndCall
Function does not disburs wages to principal and teachers
Test suit that shows calling graduateAndUpgrade
does not upgrade protocol
Recommendations: make the graduateAndUpgrade function private and add it to upgradeAndCall function
The system doesn't implement UUPS properly.
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.