Any actor is able to call function changeOwner and obtain owner role.
The vulnerability exists in the changeOwner function, as it is a public function without the required protection. Any malicious actor can call the function and obtain the owner role.
The owner role is able to call access controled functions as setBoxPrice and withdrawFunds. As any user is able to obtain owner role, it can ultimately drain the contract's funds.
Manual Review
Add a require statement to only let the owner update the owner.
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.