The same contestId
param can be assigned for different contests, causing off-chain services to malfunction.
The contestId
param is supposed to be globally unique, randomly generated off-chain (confirmed by the developer). However, when an owner executes the ProxyFactory::setContest()
to register a contest, the function does not check the double spending of the given contestId
param.
In other words, it is possible to use the same contestId
for different contests under different organizers. Moreover, the same contestId
can even be used for different contests under the same organizer if the Implementation
contract is upgraded.
The setContest()
: https://github.com/Cyfrin/2023-08-sparkn/blob/0f139b2dc53905700dd29a01451b330f829653e9/src/ProxyFactory.sol#L105-L117
The _calculateSalt()
: https://github.com/Cyfrin/2023-08-sparkn/blob/0f139b2dc53905700dd29a01451b330f829653e9/src/ProxyFactory.sol#L260-L266
The double spending of the contestId
param can cause off-chain services to malfunction.
Manual Review
Use the mapping
variable to track and verify all spent contestId
(s) in the setContest()
.
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.