The constructor should validate critical addresses (e.g., fee recipient) are non‑zero to ensure funds are not irrecoverably lost and to prevent misconfiguration at deployment time.
The BriVault constructor accepts _participationFeeAddress and stores it without validating it’s not the zero address. Any fees transferred to address(0) are burned, leading to permanent loss of funds.
Likelihood: Low
During deployment or upgrades, misconfiguration of _participationFeeAddress to address(0) can occur, especially in scripts or multi‑sig flows where parameters are templated or optional.
Audiences in CTF/contest settings often test zero‑address edge cases; this is a common oversight in constructors.
Impact: Low
Permanent loss of fees: Every deposit() call transfers the participation fee directly to participationFeeAddress. If it’s the zero address, those tokens are burned and unrecoverable.
Operational failure: Protocol revenue/accounting becomes inconsistent; fee‑recipient expectations (e.g., treasury) are not met.
Add an explicit non‑zero check in the constructor.
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.