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.