Hawk High

First Flight #39
Beginner FriendlySolidity
100 EXP
View results
Submission Details
Impact: medium
Likelihood: medium
Invalid

Teacher Payment Without Activity Verification

Summary

Teachers receive payment automatically without verification of their teaching activity or contribution.

Vulnerability Details

Root cause:

function graduateAndUpgrade(address _levelTwo, bytes memory) public onlyPrincipal {
uint256 payPerTeacher = (bursary * TEACHER_WAGE) / PRECISION;
// No activity check before payment
for (uint256 n = 0; n < totalTeachers; n++) {
usdc.safeTransfer(listOfTeachers[n], payPerTeacher);
}
}

Initial State:

  • All teachers receive equal pay

  • No activity tracking

  • No contribution requirements

Step 1: Inactive teachers added to system
Step 2: Session ends
Step 3: All teachers paid equally
Step 4: Funds distributed unfairly

Impact

  • Financial waste

  • Unfair compensation

  • Demotivates active teachers

  • Rewards inactive participants

Tools Used

Manual Review

Recommendations

mapping(address => uint256) public teacherActivity;
function graduateAndUpgrade(address _levelTwo, bytes memory) public onlyPrincipal {
require(block.timestamp >= sessionEnd, "Session not ended");
for (uint256 n = 0; n < totalTeachers; n++) {
address teacher = listOfTeachers[n];
require(teacherActivity[teacher] >= MIN_ACTIVITY, "Inactive teacher");
uint256 payPerTeacher = (bursary * TEACHER_WAGE * teacherActivity[teacher])
/ (PRECISION * TOTAL_ACTIVITY);
usdc.safeTransfer(teacher, payPerTeacher);
}
}
Updates

Lead Judging Commences

yeahchibyke Lead Judge 2 months ago
Submission Judgement Published
Invalidated
Reason: Design choice

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.