Raisebox Faucet

First Flight #50
Beginner FriendlySolidity
100 EXP
Submission Details
Impact: low
Likelihood: medium

Misleading caller restriction (contracts not actually blocked)

Author Revealed upon completion

Description:
The check behind RaiseBoxFaucet_OwnerOrZeroOrContractAddressCannotCallClaim only blocks the owner and the faucet contract itself. Other contracts can call claimFaucetTokens just fine. If the intent was to block all contracts (which has trade-offs and can be bypassed), an 'isContract'-style check is missing.

Impact

  • Misaligned assumptions: integrators may believe contract callers are disallowed while they’re not.

  • If business logic or threat model relied on “EOA-only,” it doesn’t hold.

Mitigation:
If truly required (be mindful: EOAs vs contracts is not a strong security boundary), check 'tx.origin == msg.sender', or better: '!isContract(msg.sender)' using 'extcodesize' but note it can be bypassed during construction and harms proxy/AA wallets. Prefer allowlists/role-gating over brittle contract-detection.

Support

FAQs

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