---
id: "CVE-2026-62333"
kind: "vulnerability"
aliases: ["CVE-2026-62333"]
title: "OpenVM zkVM: malicious prover can forge memory state in proofs"
severity: "high"
cvss: 8.7
epss: null
exploited: false
status: "open"
category: "package"
products: []
ecosystems: []
tags: ["openvm", "package", "rust", "zero-knowledge-proofs", "zkvm"]
not_affected_if: ["fixed-version", "not-using-openvm"]
published_at: "2026-10-30T20:17:12+00:00"
first_seen_at: "2026-10-30T20:25:38+00:00"
updated_at: "2026-10-30T20:26:15+00:00"
sources: [{"source": "nvd", "url": "https://nvd.nist.gov/vuln/detail/CVE-2026-62333", "first_seen_at": "2026-10-30T20:25:38+00:00"}]
---

# OpenVM zkVM: malicious prover can forge memory state in proofs

OpenVM, a zero-knowledge virtual machine framework, does not reject certain Merkle expansion rows in its memory air, so a malicious prover can change committed memory without a matching memory operation. The result is that OpenVM proofs can be made to attest to memory state that was never legitimately computed.

_Summary, check and fix written by a model from the sources; labelled as such._

## How to check

- Check the OpenVM version your prover or verifier depends on, for example with `cargo tree | grep openvm` in the project.
- Look for persistent memory use in the proving setup, since the sources tie the flaw to continuation segment boundaries.

## Fix

- OpenVM 1.x: `1.7.0`
- OpenVM 2.0 prerelease: `2.0.0-rc.3`
- OpenVM 2.1 prerelease: `2.1.0-preview`

## Timeline

- 2026-10-30T20:25:38+00:00 nvd https://nvd.nist.gov/vuln/detail/CVE-2026-62333

## From the sources

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, `MemoryMerkleAir` does not forbid Merkle expansion rows at `parent_height` = 0 or below while `expand_direction` != 0. A malicious prover can fabricate a subtree below a memory leaf and swap digests inside that subtree to change the committed memory root without a corresponding memory operation. The fraudulent rows still balance against the Merkle and compression buses and require no memory-bus operation for the changed leaf. Because the memory Merkle root binds VM memory state across continuation segment boundaries, this affects the soundness of OpenVM proofs using persistent memory. This issue is fixed in versions 1.7.0, 2.0.0-rc.3 and 2.1.0-preview.

---

_Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai_
