ChangeOwner function has no access control and can be called by anyone, hence anybody can become the owner and call sensitive functions that would allow them to manipulate rewards but most importantly withdraw all the funds.
Critical, anybody can become the owner and hence be able to change the price, add rewards, and most importantly withdraw all the funds
Manual review
Recommendations
Allow only the owner to change the owner (add a conditional revert so that function reverts if msg.sender is not the owner), and at best user Owner2Step to ensure safe ownership transfers
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.