The Withdraw function suppose to have only organizer Access control as stated in the comment above.
The withdraw function has "onlyOwner" modifier which is not the right acces control of the function. The correct modifier is "onlyOrganizer".
Likelihood:
Reason 1 // Likely to happen in contracts where multiple roles (e.g., owner, admin, organizer) are used.
Reason 2 // Can go unnoticed unless unit tests or access control verification is thorough.
Impact:
Impact 1 // If the organizer is not the contract owner, they will be unable to perform necessary withdrawals, resulting in loss of availability.
Impact 2 // Misalignment between comments and access logic can confuse auditors and developers, increasing the risk of future vulnerabilities.
Impact 3 // There is no onlyOwner modifier in the contract. this may lead to DOC or Any one can call the withdraw function
Verifies that the organizer is not the owner.
Simulates the organizer trying to call withdraw, expecting it to fail due to incorrect modifier (onlyOwner).
Confirms that access control is misaligned with business logic.
Replace onlyOwner with onlyOrganizer to align with function purpose and comment.
Ensure onlyOrganizer is properly implemented:
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.