The vulnerability involves addresses that are decided as winners and tied with their respective percentages to constitute 100% of the rewards minus the COMMISSION_FEE
. If one or more of these addresses are blacklisted by the token being used for rewards (e.g., USDC), rewards distribution cannot be executed because the system is unable to make the transfer. This can lead to funds being stuck in the contract.
Owner calls setContest
with the correct salt
.
The Organizer sends USDC as rewards to a pre-determined Proxy address.
One or more winners are blacklisted by the USDC operator.
When the contest is closed, the Organizer calls deployProxyAndDistribute
with the registered salt
to deploy a proxy and distribute rewards. However, the call to distribute
fails because Distributor._distribute
reverts at Line 147 due to the presence of blacklisted addresses.
USDC held at the Proxy becomes stuck and cannot be distributed to non-blacklisted winners.
The impact of this vulnerability is marked as Medium because when the issue occurs, funds would be blocked until either blacklisted winners are removed or their addresses are changed. If the blacklisted winners are removed, the reward system becomes unfair. If their addresses are changed, it could be blocked by the winners' actions for a proportionally long time, depending on the number of blacklisted addresses. This has the potential to disrupt the distribution process (griefing).
Manual Review
To mitigate this vulnerability, the following recommendations are made:
Save winners and their claimable rewards into storage. Move the token transfer to winners into a separated claim
function. This way, other winners won't be blocked from obtaining their rewards.
Implement a function for blacklisted winners to change their addresses, allowing them to receive their rewards without causing a distribution blockage.
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.