In case a contest is set with same contestId but different implementation, the signature used for one implementation can be used in another.
The owner can create a contest with the same contestId
but a different implementation. If the first contest created uses deployProxyAndDistributeBySignature
, the same signature can be used in the second contest created with a different implementation. By using old data, the amount distributed would also be sent to the old winners.
Using the file in test/integration/ProxyFactoryTest.sol
To run add this function to file and call forge test --mt testSignatureMalleability
Anyone can frontrun the deployProxyAndDistributeBySignature
function using old data. This could result in sending the incorrect amount to different winners.
The impact of this issue is medium because the likelihood of the owner creating the same contestId is low. However, the impact can be critical.
Manual Review
It is recommended to add the implementation
address to the digest
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.