FestivalPass::redeemMemorabilia()
Allows Bypassing Attendee Rewards LogicThe function FestivalPass::redeemMemorabilia()
allows any address to redeem memorabilia NFTs as long as they hold enough BEAT tokens, without any verification that the caller:
owns a valid festival pass
has attended any performance (which is how BEAT tokens are normally earned).
This directly contradicts the project documentation, which states that only users who attend performances using festival passes should be able to redeem memorabilia using BEAT tokens.
As a result, any external user or bot can preemptively drain memorabilia collections by purchasing BEAT tokens off-market (e.g., via an airdrop, liquidity, or external mint) and redeem them freely.
Likelihood:
The function is external, so anyone can call it with no access restriction
Impact:
Users who fairly earned BEAT tokens by attending performances may no longer be able to redeem memorabilia due to limited supply.
The rarity and exclusivity of collectibles can be compromised.
The protocol's reward system becomes meaningless, and bots can front-run user actions.
Add this POC in your FestivalPass.t.sol
Add checks to ensure only legitimate attendees can redeem memorabilia
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.