The ThePredicter::makePrediction
function lacks a check to ensure that only approved players can make predictions, allowing any address to participate in the prediction process.
According to the README.md
file:
Until 19:00:00 UTC on the day of the match, predictions can be made by any approved Player. Players pay prediction fee when making their first prediction for each match.
This means that only approved players should be able to make predictions. However, the makePrediction
function does not include a check to verify if the caller is an approved player. This oversight allows any address to call the function and make predictions, as long as they pay the correct prediction fee.
This vulnerability causes significant prize pool dilution and unfair reward distribution. Unauthorized users can participate in predictions without paying the entrance fee, yet still become eligible for rewards if their prediction scores are positive. Consequently, the prize pool is shared among more participants than intended, reducing the rewards for legitimate, approved players who have paid both the entrance and prediction fees.
Manual review, Foundry
Add a check at the beginning of the makePrediction
function to ensure the caller is an approved player:
makePrediction has no access controls and any unapproved user can make predictions causing an incorrect calculation and distribution of rewards.
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.