The protocol relies on a verifier contract generated from specific circuit artifacts. Correctness assumes the deployed verifier corresponds to the intended circuit version.
The issue is that verifier identity is not pinned on-chain. TreasureHunt accepts a verifier address at deployment and during updates without validating code hash / circuit identity. As a result, a stale or mismatched verifier can be accepted, causing verification behavior to diverge from intended circuit semantics.
Likelihood:
Verifier rotations are supported by design and operator mistakes are realistic in artifact-based workflows.
Generated verifier artifacts can drift across toolchain/circuit versions.
Impact:
Claims may unexpectedly fail (DoS) or follow unintended verification rules.
The contract does not enforce or attest expected verifier identity, so users must trust off-chain operational discipline for artifact correctness.
Severity rationale:
Classified as Low because this is an integrity/operational hardening issue; no direct theft path is introduced by this bug alone.
Written reproduction flow:
Generate/deploy TreasureHunt with verifier V1 from circuit artifacts C1.
Later, while paused, update to verifier V2 generated from different artifacts C2 (or stale build).
Unpause and submit proofs expected for C1.
Verification behavior diverges (unexpected reverts/acceptance conditions), while contract provides no on-chain check that V2 matches intended identity.
Pin verifier identity on-chain and enforce it during construction and updates, while preserving controlled verifier upgrades.
Also enforce the same codehash assertion in deployment tooling before broadcasting.
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.