The protocol is susceptible to signature replay attacks due to the lack of fields on which the message is signed.
The protocol does not use any signature timestamp
(after which the signature is not useable) or a nonce ( a number unique to every user) inside ProxyFactory#deployProxyAndDistributeBySignature
.
In fact, it uses the following method that can for sure prevent the cross-chain signature replay but not across one chain.
Invalid signatures might be accepted in deployProxyAndDistributeBySignature
and cause invalid proxy contracts to be deployed by the same person even if they intended to deploy only once.
Manual review
There are two possible solutions:
Implement nonce based signing
Implement signatures caching so that multiple signatures can't be replayed.
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.