"Students must have gotten all reviews before system upgrade. System upgrade should not occur if any student has not gotten 4 reviews (one for each week)" - There is no check to see if all students have received all 4 reviews in graduateAndUpgrade(). This means that students can graduate without being given a single review. This breaks the protocols core functionality.
The number of reviews a student receives is stored in reviewCount, although this mapping is never checked in graduateAndUpgrade(). This means that a student can graduate even if they only have one review.
This PoC only works if the vulnerablities affecting the storage layout and invalid implementation are fixed, otherwise we can't upgrade the contract and therefore cannot check it's state.
PoC:
When graduateAndUpgrade() is called, all students will graduate regardless of the number of reviews they have received. This means that if it is called before all reviews are given, students without the correct number of reviews will be automatically graduated. This allows students who would have potentially received negative reviews to graduate before they are given. This breaks the protocol's functionality.
Manual review
Require all students to have at least 4 reviews in graduateAndUpgrade().
All students are graduated when the graduation function is called as the cut-off criteria is not applied.
All students are graduated when the graduation function is called as the cut-off criteria is not applied.
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.