Description:
Passes (IDs 1–3) are implemented as a standard ERC-1155 token with no transfer restrictions. Attendance (“check-in”) is tracked by address (hasAttended[performanceId][msg.sender]
) and cooldown (lastCheckIn[msg.sender]
). An attacker can repeatedly transfer their pass to fresh addresses to bypass both the “already attended” and cooldown guards, calling attendPerformance
multiple times within a single performance period and minting unlimited BEAT tokens.
Impact:
An attacker can drain the BEAT token supply (or inflate it arbitrarily), breaking the festival’s token economy and undermining all downstream memorabilia redemption.
Proof of Concept: Add the following test to the 'FestivalPass.t.sol' file:
Mitigation:
– Make passes non-transferable (soulbound) by overriding _beforeTokenTransfer
to block all transfers except mint/burn.
– Or track attendance per token ID (not per address).
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.