Reuse passes allow multiple users to illegitimately attend performances
The attendPerformance function is intended to allow only legitimate pass holders to attend a performance and earn BEAT token rewards. However, the access control logic uses hasPass(msg.sender) to verify the ownership. Since the hasPass checks only the balanceOf(user), it can be trivially bypassed by transferring a pass to another user who can then also call attendPerformance.
Likelihood: High
This bug can be exploited by any pass holder without any technical expertise by transferring their pass between accounts. The exploit works with regular wallets and does not require a contract-based attack.
Impact: High
Multiple addresses can illegitimately attend perfomances and claim BEAT rewards for a single pass. This defeats the anti-sybil assumption that each pass grants access to one use performance.
Bind performance attendance with the token id
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.