The faucetClaimer public state variable is updated to msg.sender in claimFaucetTokens without additional access control. Its persistent storage and public visibility could lead to confusion or misuse in external integrations, as it’s unclear why it’s stored beyond the transaction.
Likelihood:
Occurs when external contracts or users rely on faucetClaimer for state tracking, misinterpreting its purpose.
Occurs during any claim, as the variable is always updated.
Impact:
Causes confusion in integrations expecting faucetClaimer to represent a specific state.
Minimal direct security impact but could lead to integration errors.
Explanation: The PoC demonstrates how faucetClaimer is overwritten with each claim, potentially confusing external systems that rely on it. After user1 claims, faucetClaimer is set to user1, but user2’s claim immediately overwrites it, making it unreliable for tracking.
Explanation: We remove the faucetClaimer state variable and use a local variable (claimant) within claimFaucetTokens. This eliminates the need for persistent storage, reduces confusion, and maintains the same functionality using msg.sender directly.
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.