The pseudo-random seed uses keccak256(concat(convert(block.timestamp, bytes32), convert(msg.sender, bytes32))). This is predictable and manipulable by miners (they influence timestamp slightly) and by users (msg.sender is known).
Attackers (or miners) can bias requested or extra_item_chance to obtain more items, especially when inventory is low. This can be used to drain inventory or exploit timing.
Likelihood:
A miner can include a transaction at a timestamp that yields a favorable seed or an attacker can try call ordering/back-running to hit a favorable block timestamp.
Use a secure randomness source (Chainlink VRF) for important value. If VRF is not available, do not rely on on-chain timestamp randomness for value-sensitive decisions; at minimum use blockhash of a previous block (still not secure) and combine multiple entropy sources and limit the impact of randomness on economic outcome.
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.
The contest is complete and the rewards are being distributed.