Beginner FriendlyGameFi
100 EXP
View results
Submission Details
Impact: medium
Likelihood: medium
Invalid

Insufficient Fund Assertion Timing

Root + Impact

Description

  • balance checked before registration; race condition possible.

assert!(state.balance >= amount, E_INSUFFICIENT_FUND); // @> before updating claimed_users

Risk

Likelihood:

  • Multiple claims could temporarily bypass balance check.

Impact:

  • Potential over-withdrawal of pool funds.

Proof of Concept

// Two users claim almost simultaneously

Recommended Mitigation

+ table::add(&mut state.claimed_users, user_addr, true);
+ state.balance = state.balance - amount;
- assert!(state.balance >= amount, E_INSUFFICIENT_FUND);
+ assert!(state.balance >= 0, E_INSUFFICIENT_FUND);
Updates

Appeal created

bube Lead Judge 12 days ago
Submission Judgement Published
Invalidated
Reason: Non-acceptable severity

Support

FAQs

Can't find an answer? Chat with us on Discord, Twitter or Linkedin.