Description:
Every time the organizer calls configurePass
, the line
'passSupply[passId] = 0;'
resets the recorded supply back to zero, even if passes have already been sold. This lets the organizer (or anyone with the organizer role) “re-open” sales indefinitely, completely bypassing the passMaxSupply
constraint.
Impact:
An attacker with the organizer role can mint unlimited passes (and their associated on-mint BEAT bonuses), ruining scarcity guarantees and undermining ticket economics.
Proof of Concept: Add the following test to the 'FestivalPass.t.sol' file:
Mitigation:
– Do not reset passSupply
in configurePass
. Initialize it only once, or split price and supply configuration into separate functions that don’t reset supply.
– Or add a flag so that configurePass
can only be called before any sales.
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.