The mint()
and withdraw()
functions allow direct execution of sensitive actions—minting BeatTokens and withdrawing ETH from the contract's balance. These actions should typically be restricted to the contract owner or authorized addresses only.
However, the contract lacks any onlyOwner
or equivalent access control checks, allowing any external user to arbitrarily call these functions and perform privileged actions, including draining all ETH or inflating the token supply.
Root Cause:
Likelihood:
This will occur whenever an attacker obtains BEAT tokens and calls redeemMemorabilia()
. No additional constraints exist to limit usage, such as whitelisting, claim windows, or role verification.
Impact:
Unauthorized users can burn acquired BEAT tokens (even stolen or bought cheaply) and mint limited edition memorabilia NFT.
Role-based Access Control (RBAC):
Introduce onlyOwner
modifiers for sensitive minting operations if needed.
Add Usage Constraints:
Implement redemption windows, time locks, or allowlists.
Track redemptions per address to limit abuse.
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.