In the _calculateSalt function, the salt is generated by concatenating three components: the contest organizer's address, the contest ID, and the implementation address. If the concatenation of these components results in a value that is larger than the maximum representable integer, the result of the hash operation will be unpredictable and could lead to unexpected proxy contract addresses.
The vulnerable part in code :
Here is a poc of exploiting the vulnerability
The creation of proxy contracts succumbs to the attacker's will, potentially leading to the exploitation of vulnerabilities in puppet contracts.
Exploit Path:
The attacker crafts a contest ID designed to manipulate the high bits of the organizer's address.
The attacker forms a salt using this crafted contest ID and their own implementation address.
The manipulated salt opens a gateway to unpredictable proxy contract creation.
As the implementation is selected by the attacker, a puppet contract emerges
Manual review
using a counter or nonce specific to each organizer's contests
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.