Description:
The contract’s constructor and two functions accept address parameters without checking for the zero address (address(0)
). Specifically:
The constructor assigns _beatToken
and calls setOrganizer(_organizer)
without validating that these inputs are non-zero.
setOrganizer(address _organizer)
allows the owner to set the organizer
to address(0)
.
withdraw(address target)
allows the owner to send contract funds to address(0)
, effectively burning Ether.
Impact:
Permanent Loss of Funds: Calling withdraw(address(0))
will send Ether to the zero address, irreversibly locking the contract’s entire balance.
Broken Contract Logic: Setting organizer
to zero disables all organizer-restricted functionality, potentially bricking parts of the contract.
Misconfigured Token Integration: Assigning the beatToken
address to zero nullifies all token interactions, breaking token minting and burning.
Mitigation:
Enforce Non-Zero Checks: Add require
statements for all external address inputs:
Owner/admin is trusted / Zero address check - Informational
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.