TheupdateVerifier()function allows the owner to replace the critical ZK proof verifier contract that validates all treasure claims
The function lacks any validation that the new verifier address is non-zero or contains contract code, allowing the owner to accidentally or maliciously set an invalid verifier that breaks the protocol or enables fund theft
Likelihood: MEDIUM
This will occur when the owner accidentally passes address(0) or an EOA address during verifier update
This will occur when a compromised owner intentionally sets a malicious verifier to drain funds
Impact: MEDIUM to HIGH
Setting verifier to address(0) causes permanent DoS - all claim() calls revert
Setting verifier to an EOA causes unpredictable behavior and likely reverts
Setting verifier to a malicious contract that always returns true allows draining all 100 ETH
Recovery requires pausing and updating again, but damage may already be done
The vulnerability allows both accidental misconfiguration and intentional exploitation through invalid verifier addresses.
Add comprehensive validation for the new verifier address to match or exceed the constructor's validation:
*// Add these validation checks:*
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.
The contest is complete and the rewards are being distributed.