Root Cause: No maximum limits on fees or periods, Impact: Game becomes unplayable or stalls indefinitely - a vector for human error and griefing
WHY WOULD ANYONE TRUST THE OWNER: It's a Game something similar to a gamble. So we can't expect the owner to be fair. The owner can change the rules at any time, so we can't expect the game to be fair.
The Game
contract currently enforces only lower bounds (> 0
) on two key configuration parameters-initialClaimFee
and initialGracePeriod
—both in its constructor and in the owner-only update functions.
By omitting upper-limit checks, the deployer or owner can inadvertently (or maliciously) set:
Entry fees so large (e.g. 100_000_000_000 ether
) that no participant can afford to play.
Grace periods so long (e.g. 36000
seconds instead of 3600
) that no one can ever call declareWinner()
within a reasonable timeframe.
This oversight not only frustrates users but also opens a griefing vector: a bad actor could freeze the game at will or make participation cost-prohibitive. Furthermore, analogous real-world DeFi exploits have occurred when protocols lacked upper bounds on critical parameters-resulting in multimillion-dollar losses.
Constructor
updateClaimFeeParameters()
updateGracePeriod()
Likelihood: Low
Real-World DeFi Exploits Due to Missing Bounds
Nomad Bridge Exploit (Aug 2022)
A flawed upgrade removed a check that limited which message IDs could be processed. Attackers replayed a single valid cross-chain transfer call to drain ~$190 million by repeatedly withdrawing without bound.
bZx Flash Loan Attack (Sep 2020)
The protocol lacked bounds on price manipulation impact when sourcing rates from Uniswap. An attacker used a flash loan to skew the price oracle beyond expected limits, then borrowed under-collateralized amounts—netting $8 million before fix.
Both incidents illustrate how missing upper-limit validations on critical parameters can lead to catastrophic, multi-million-dollar losses.
Impact: Low
Game Freeze: No one can join or progress.
User Frustration: Legitimate players blocked by absurd settings.
Griefing Vector: Malicious owner can sabotage gameplay.
Audit Complexity: Every parameter change requires manual review.
Reputation & Revenue Loss: Platform appears unreliable, deterring participation.
Refs & Resources:
Tools Used
Foundry Test Suite
Chat-GPT AI Assistance (Report Grammar Check & Improvements)
Manual Review
Scenario
A developer mistypes 100_000_000_000 ether
for _initialClaimFee
, expecting 0.01 ether
.
Another confuses seconds, passing 36000
instead of 3600
.
The contract deploys successfully, but players are unable to join (fee too high) or declare a winner (period too long).
Define & Enforce Sensible Upper Bounds
Use Custom Errors
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.