SNARKeling Treasure Hunt

First Flight #59
Beginner FriendlyGameFiFoundry
100 EXP
Submission Details
Impact: medium
Likelihood: medium

Missing Verification of Treasure Count Bounds

Author Revealed upon completion

Root + Impact

Description

  • The contract tracks claimsCount but does not validate upfront whether remaining treasures are actually claimable or distinct before incrementing.

// Root cause in TreasureHunt.sol
// @> No check tying treasureHash to allowed set
_incrementClaimsCount();

Risk

Likelihood:

  • Happens during normal claim flows.

Allows claimsCount to be artificially inflated without valid distinct treasure claims.

Impact:

  • Exhausts the claimsCount limit, locking out legitimate hunters.

Proof of Concept

for (i = 0; i < MAX_TREASURES; i++) {
claim(fakeProof, someHash, attacker);
}
// claimsCount becomes MAX_TREASURES, blocking future claims

Recommended Mitigation

  • Ensure that proof maps to distinct treasures chosen at deployment.

- remove this code
+ add this code
+require(validTreasures[treasureHash], "Invalid treasure");

Support

FAQs

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

Give us feedback!