Skip to content

fix: endorse a graph only for the operator and peer that ran the verifier setup - #522

Open
KSlashh wants to merge 1 commit into
devfrom
audit/18b-verifier-binding
Open

KSlashh wants to merge 1 commit into
devfrom
audit/18b-verifier-binding

Conversation

@KSlashh

@KSlashh KSlashh commented Nov 9, 2026

Copy link
Copy Markdown
Collaborator

Audit item M6. Open against dev.

verifier_validate_graph checked the graph's GC data against the local soldering proof but not who the graph belonged to. The verifier's setup state records the operator key and peer that sent the authenticated InitGraph, and CutCircuits already checks the peer. Another staked operator could assemble the verifier's slot from gossip, put it in its own graph and obtain the honest verifier's endorsement. Combined with graph-id squatting, that lets a squatted graph complete with honest endorsements.

  • The verifier ignores a CreateGraph whose operator_pubkey differs from the setup state's operator key, or whose sender is not the setup operator's peer. The setup state is loaded and these checks run before the Bitcoin/GOAT lookups, so a mismatched graph costs no network calls.
  • It ignores rather than invalidates: a third party must not be able to fail the honest graph by sending a bad CreateGraph for its id.

Tests: the matching operator passes; another operator's key, or the right key from another peer, is refused. Node tests and clippy pass.

Validation results above are recorded in the zkm PR notes. Branch scope and diff formatting were checked locally; builds and tests were not rerun during publication.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants