festivalContract address can only be set once making the protocol non-upgradeable and vulnerable to permanent lockdownDescription
The BeatToken contract has a critical design flaw where the festivalContract address can only be set once and cannot be updated thereafter. The setFestivalContract() function contains a requirement that prevents any changes after the initial setup:
This creates multiple severe issues:
No upgrade path: If the FestivalPass contract has a critical bug or vulnerability, there's no way to deploy a fixed version and update the token to work with it
Permanent misconfiguration: If the wrong address is set accidentally during deployment, the entire token becomes permanently unusable
Single point of failure: The protocol's entire functionality depends on a single immutable contract address
Cannot support multiple festivals: The token is locked to one festival contract forever, preventing reuse for future events
Impact
CRITICAL - This vulnerability can lead to complete protocol failure:
Permanent DOS if wrong address is set: If the owner accidentally sets an incorrect address (typo, wrong network, undeployed contract), all minting and burning functionality becomes permanently broken since only festivalContract can call these functions.
Cannot fix bugs: If a critical vulnerability is discovered in the FestivalPass contract:
Users' funds could be at risk
No way to migrate to a patched version
The entire token economy becomes stuck with the vulnerable contract
Cannot upgrade features: New features, improvements, or optimizations cannot be added without deploying an entirely new token (losing all existing holders and liquidity).
Loss of funds: Users who purchased passes and earned BEAT tokens could lose access to their rewards if the festival contract becomes non-functional.
Proof of Concept
Scenario 1: Accidental wrong address
Scenario 2: Bug in FestivalPass requires upgrade
Current vulnerable code flow:
Recommended Mitigation
Remove the restriction that prevents updating the festival contract address. Add proper access control and validation:
Additionally, consider implementing a timelock or multi-sig requirement for critical address changes to prevent malicious or accidental updates:
This allows:
Upgrading to fixed versions if bugs are found
Correcting mistakes during deployment
Supporting multiple festival seasons
Maintaining protocol flexibility while keeping owner-only access control
The contest is live. Earn rewards by submitting a finding.
Submissions are being reviewed by our AI judge. Results will be available in a few minutes.
View all submissionsThe contest is complete and the rewards are being distributed.