The configurePass function in FestivalPass.sol can be called multiple times for the same passId by the organizer, which resets the current supply counter (passSupply[passId] = 0) each time. This creates several critical issues:
Likelihood:
The organizer might already have minted passes before, and he could make a mistake by calling configurePass again, which resets the supply counter to 0.
Impact:
If passes have already been minted and the organizer calls configurePass again, the supply counter resets to 0
This allows minting beyond the originally intended maximum supply for example: If 50 VIP passes were already sold and organizer reconfigures, the counter resets, allowing another 50+ passes to be minted
Organizer can change prices after passes have been sold, potentially creating unfair pricing. Early buyers might pay higher prices, while later buyers benefit from reduced prices.
Could be used maliciously to oversell passes, leading to venue capacity issues and undermining the NFT's value proposition based on limited supply
The POC is simple, an organizer can call configurePass the first time, passing in required variables to configure for a specific ticket type. The organizer can make a mistake and call the configurePass again, thereby overriding what was set before. This can be used to create an infinite number of tickets.
Implement the function to stop reconfiguration once it has been configured before. This ensures that the terms under which users purchase passes cannot be changed retroactively.
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.