Description: Hashing msg.sender
, block.timestamp
, and block.prevrandao
together create a predictable find number. A predictable number is not a good random number. Malicious users or organiser can manipulate these values and become winner or Ram themselves.
Impact: The organiser can influence the selection of Ram if not selected by the user, winning the money. Making the entire Dussera worthless.
Proof of Concept:
Validators predicting block timestamp
and block prevrandao
can significantly manipulate their participation.
The organiser can modify their message sender value, making their address the preferred one to determine the selected RAM if not selected by the user.
Transactions, such as select Ram if not selected, can be reverted by users if the result doesn't meet their satisfaction.
Recommended Mitigation: A cryptographically verifiable random number generator, such as Chainlink VRF, could substantially mitigate such issues.
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.