---
id: CVE-2026-62334
title: OpenVM's OpenVmHalo2Verifier self-call can bypass proof verification
summary: >-
  OpenVM is a performant and modular zkVM framework built for customization and
  extensibility. Before 1.7.0 in the 1.x line and in affected 2.0 and 2.1
  prereleases, `OpenVmHalo2Verifier.verify` constructs raw proof calldata from
  user-contr…
severity: high
cvss: 8.7
cvssVector: 'CVSS:4.0/AV:N/AC:L/AT:N/PR:N/UI:N/VC:N/VI:H/VA:N/SC:N/SI:N/SA:N'
cvssSource: cna
cwe:
  - CWE-754
vendor: openvm-org
product: openvm
affected:
  - openvm < 1.7.0
  - 'openvm >= 2.0.0-alpha, < 2.0.0-rc.3'
  - 'openvm >= 2.1.0-dev.0, < 2.1.0-preview'
ssvc:
  exploitation: none
  automatable: 'yes'
  technicalImpact: partial
  timestamp: '2026-10-30T21:26:46.463302Z'
published: '2026-10-30'
updated: '2026-10-30'
sourceUpdated: '2026-10-30T22:13:55.245Z'
source: CVEORG
sourceUrl: 'https://www.cve.org/CVERecord?id=CVE-2026-62334'
references:
  - url: >-
      https://github.com/openvm-org/openvm/security/advisories/GHSA-j29p-wr24-hp4f
    label: >-
      https://github.com/openvm-org/openvm/security/advisories/GHSA-j29p-wr24-hp4f
  - url: 'https://github.com/openvm-org/openvm/pull/151'
    label: 'https://github.com/openvm-org/openvm/pull/151'
  - url: >-
      https://github.com/openvm-org/openvm/commit/751bdb1725254c3268782ddf8df89f19035666e3
    label: >-
      https://github.com/openvm-org/openvm/commit/751bdb1725254c3268782ddf8df89f19035666e3
  - url: >-
      https://github.com/openvm-org/openvm/blob/v2.0.0-alpha/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
    label: >-
      https://github.com/openvm-org/openvm/blob/v2.0.0-alpha/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
  - url: >-
      https://github.com/openvm-org/openvm/blob/v2.0.0-beta.2/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
    label: >-
      https://github.com/openvm-org/openvm/blob/v2.0.0-beta.2/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
  - url: >-
      https://github.com/openvm-org/openvm/blob/v2.1.0-dev.0/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
    label: >-
      https://github.com/openvm-org/openvm/blob/v2.1.0-dev.0/crates/sdk/contracts/template/OpenVmHalo2Verifier.sol
  - url: 'https://github.com/openvm-org/openvm/releases/tag/v1.7.0'
    label: 'https://github.com/openvm-org/openvm/releases/tag/v1.7.0'
  - url: 'https://github.com/openvm-org/openvm/releases/tag/v2.0.0-rc.3'
    label: 'https://github.com/openvm-org/openvm/releases/tag/v2.0.0-rc.3'
  - url: 'https://github.com/openvm-org/openvm/releases/tag/v2.1.0-preview'
    label: 'https://github.com/openvm-org/openvm/releases/tag/v2.1.0-preview'
tags:
  - cve.org
epss: 0.00525
epssPercentile: 0.44773
ingestedAt: '2026-11-05T16:24:31.475Z'
---

## Overview

OpenVM is a performant and modular zkVM framework built for customization and extensibility. Before 1.7.0 in the 1.x line and in affected 2.0 and 2.1 prereleases, `OpenVmHalo2Verifier.verify` constructs raw proof calldata from user-controlled `proofData`, performs a `staticcall` to `address(this)`, and treats a successful call as proof acceptance. If the first four proof bytes match another external selector exposed by the wrapper, dispatch can invoke a successful non-verifier function instead of the generated Halo2 fallback verifier. Applications using the generated Solidity wrapper can consequently accept arbitrary app commitments and public values without checking the proof suffix, accumulator, app commitments or public values. This issue is fixed in versions 1.7.0, 2.0.0-rc.3 and 2.1.0-preview.

## Affected

- `openvm < 1.7.0`
- `openvm >= 2.0.0-alpha, < 2.0.0-rc.3`
- `openvm >= 2.1.0-dev.0, < 2.1.0-preview`

## Remediation

Refer to the linked advisories for vendor-supplied fixes and affected version ranges.
