The unrestricted receive()
function allows direct ETH transfers that become permanently locked in the contract, providing no utility while creating fund loss risks.
Affected Component
Technical Analysis
Silent Acceptance:
ETH transfers succeed without reverting
No connection to game logic
Storage Impact:
Increases contract balance irreversibly
No corresponding game state changes
Attack Scenario
Actors:
Patrick (Accidental User)
Contract (Victim)
Steps:
Patrick sends ETH directly:
Transaction succeeds (no revert)
Resulting State:
Contract balance increases by 1 ETH
No game created
No refund mechanism exists
Any ETH sent to the contract address is permanently locked.
Manual Code Review
1) Immediate Fix (Option A)
2) Credit System (Option B)
ETH sent directly to the contract via the receive function or after a canceled game becomes permanently locked
ETH sent directly to the contract via the receive function or after a canceled game becomes permanently locked
ETH sent directly to the contract via the receive function or after a canceled game becomes permanently locked
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.