The configurePass()
function is meant to allow event organizers to update the pricing and supply limits of a given pass type (e.g., General, VIP, or Backstage). However, it resets the internal counter tracking how many passes have already been minted (passSupply[passId] = 0
) without burning or revoking the previously issued tokens.
This causes the contract to "forget" how many tokens were already distributed, which allows new passes to be minted beyond the configured maxSupply
— violating the pass type’s intended scarcity.
Risk Assessment
Likelihood:
Organizers will naturally want to adjust pricing as demand changes during festival sales
The function is designed for configuration updates, making calls highly probable
No warnings or documentation about the supply reset side effect
Impact:
Breaks tokenomics by allowing unlimited minting beyond intended scarcity limits
Devalues existing pass holders' investments through artificial inflation
Violates smart contract invariants regarding maximum supply constraints
This is not acceptable as high because any attack vectors related to organizer trying to milk ETH from participants is voided by the fact that the organizer is trusted.
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.