If the owner acts maliciously or their private key is compromised, all funds in the vault can be stolen.
All users who bet on the “correct” team could lose their deposits to another team designated as the winner.
In practice, this risk makes the vault fully custodial, which defeats the purpose of using an on-chain betting vault.
The vault relies on an owner account to finalize the tournament result by calling a function such as setWinner(teamId). However, there are no safeguards that limit when or how often this function can be called, or who verifies the correctness of the result.
If the owner acts maliciously or their private key is compromised, all funds in the vault can be stolen.
All users who bet on the “correct” team could lose their deposits to another team designated as the winner.
In practice, this risk makes the vault fully custodial, which defeats the purpose of using an on-chain betting vault.
Likelihood:
The issue occurs whenever the tournament ends and the owner executes setWinner() to determine the winning team.
It will also occur whenever the owner’s private key is compromised or the owner acts dishonestly and selects an incorrect team to favor specific addresses.
Impact:
Impact 1: The entire pool of user funds can be redirected to a single team controlled by the owner or a malicious actor, resulting in a total loss for legitimate participants.
Impact 2: Users lose confidence in the fairness and integrity of the vault, making the system functionally custodial rather than decentralized, and potentially exposing deployers to legal and reputational damage.
Team A: 1000 tokens
Team B: 800 tokens
Real-world winner is Team A.
Owner calls setWinner(1) for Team B.
Users who bet on Team A cannot withdraw; Team B holders withdraw all 1800 tokens.
This change:
Prevents multiple or arbitrary overwrites of the winner.
Restricts finalization to a fixed time window.
Emits an event for transparency.
Provides an optional emergency unlock path if the owner fails to act.
This is owner action and the owner is assumed to be trusted and to provide correct input arguments.
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.