A malicious contract can compute winnerIndex before calling PuppyRaffle::selectWinner, therefore he can chose to do the actual call when he knows he is the winner.
A malicious contract define such as
would be able to call the PuppyRaffle::selectWinner function only when we are the winner
likelihood 100%
impact very high because you remove all randomness to win, therefore most likely only attacker will win the raffle
So this is a high vulnerability
read the code
Use of chainlink VRF number in the line to select the winnerIndex
where VRFnumber is a number generated by a Chainlink VRF(Verifiable Random Function)
Root cause: bad RNG Impact: manipulate winner
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.