An arbitrary user can escalate their role as the contract owner that has a complete control over the contract.
Function changeOwner() allows everyone to change the owner address. This allows the new owner to execute damaging actions to the contract, such as draining assets. This is because the function changeOwner() does not have any access control to limit the function access to a certain party (most likely the current owner).
A user takes over the contract ownership and drains the contract's assets.
Manual review.
Consider adding an access control to limit the access to the function.
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.