The ChoosingRam::selectRamIfNotSelected function is intended to select a ram if no user has been selected by the end of an event. However, the function relies on block parameters, specifically block.timestamp and block.prevrandao, to generate a random number for determining the ram. These values are deterministic and predictable, which allows the organizers or an attacker to manipulate the outcome.
Function Affected: ChoosingRam::selectRamIfNotSelected
Parameters Used: block.timestamp, block.prevrandao
Issue: The use of predictable block parameters for random number generation.
Exploitation: An attacker or the organizers can predict the random number and manipulate the selection process to ensure a specific user is chosen as the ram.
Integrity: The fairness of the selection process is undermined, as the outcome can be influenced by those with knowledge of the deterministic values.
Manual Review
The organizer is trusted, but the function `ChoosingRam::selectRamIfNotSelected` uses a way to generate a random number that is not completely random.
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.