{"id":"CVE-2026-62333","kind":"vulnerability","aliases":["CVE-2026-62333"],"related":[],"title":"OpenVM zkVM: malicious prover can forge memory state in proofs","description":"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.","summary":"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.","severity":"high","cvss":8.7,"epss":null,"exploited":false,"exploited_at":null,"products":[],"ecosystems":[],"tags":["openvm","package","rust","zero-knowledge-proofs","zkvm"],"not_affected_if":["fixed-version","not-using-openvm"],"how_to_check":"- Check the OpenVM version your prover or verifier depends on, for example with `cargo tree | grep openvm` in the project.\n- 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`\n- OpenVM 2.0 prerelease: `2.0.0-rc.3`\n- OpenVM 2.1 prerelease: `2.1.0-preview`","status":"open","published_at":"2026-10-30T20:17:12+00:00","first_seen_at":"2026-10-30T20:25:38+00:00","triaged_at":"2026-10-30T20:26:15+00:00","updated_at":"2026-10-30T20:26:15+00:00","category":"package","confidence":0.6,"triage":{"at":"2026-10-30T20:26:15Z","model":"claude-haiku-5-5","output":{"fix":"- OpenVM 1.x: `1.7.0`\n- OpenVM 2.0 prerelease: `2.0.0-rc.3`\n- OpenVM 2.1 prerelease: `2.1.0-preview`","reach":"unknown","title":"OpenVM zkVM: malicious prover can forge memory state in proofs","impact":"high","summary":"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.","audience":"developers","category":"package","nicknames":[],"who_cares":["openvm","zkvm","rust","zero-knowledge-proofs"],"confidence":0.6,"fix_status":"available","needs_auth":"unknown","worst_case":"Malicious prover forges memory state, making invalid proofs verify.","analyst_note":"","how_to_check":"- Check the OpenVM version your prover or verifier depends on, for example with `cargo tree | grep openvm` in the project.\n- Look for persistent memory use in the proving setup, since the sources tie the flaw to continuation segment boundaries.","plain_action":"","needs_analyst":false,"not_affected_if":["fixed-version","not-using-openvm"],"who_is_affected":"Teams that build or run OpenVM provers or verifiers on versions before 1.7.0 or on the affected 2.0 and 2.1 prereleases. The sources describe soundness of proofs that use persistent memory across continuation segments, so teams relying on OpenVM proofs for trust decisions are the ones who matter. Teams on fixed versions, or not using OpenVM, can skip it.","user_interaction":"no","needs_special_setup":"unknown","severity_if_unknown":"high"},"cost_usd":0.000756,"input_tokens":4312,"output_tokens":649,"severity_before":"high"},"analyst_status":null,"analyst_note":null,"search":"'-2026':12A,15A '-62333':13A,16A '0':113C,119C '1':93C '1.7.0':90C,199C '2.0':99C '2.0.0':200C '2.1':101C '2.1.0':203C 'across':179C 'affect':98C,184C 'air':43B 'attest':67B 'balanc':152C 'bind':175C 'boundari':182C 'built':84C 'bus':164C 'buse':158C 'certain':36B 'chang':49B,138C,168C 'commit':50B,140C 'compress':157C 'comput':75B 'continu':180C 'correspond':145C 'custom':86C 'cve':11A,14A 'digest':133C 'direct':118C 'expand':117C 'expans':38B,108C 'extens':88C 'fabric':124C 'fix':196C 'forbid':106C 'forg':6A 'framework':32B,83C 'fraudul':149C 'height':112C 'insid':134C 'issu':194C 'knowledg':22B,29B 'leaf':130C,169C 'legitim':74B 'line':95C 'machin':31B 'made':65B 'malici':3A,46B,121C 'match':54B 'memori':7A,42B,51B,55B,69B,129C,141C,146C,163C,172C,177C,192C 'memory-bus':162C 'memorymerkleair':103C 'merkl':37B,107C,155C,173C 'modular':81C 'never':73B 'openvm':1A,17B,25B,61B,76C,188C 'oper':56B,147C,165C 'packag':18B 'parent':111C 'perform':79C 'persist':191C 'prereleas':102C 'preview':204C 'proof':10A,23B,62B,189C 'prover':4A,47B,122C 'rc.3':201C 'reject':35B 'requir':160C 'result':58B 'root':142C,174C 'row':39B,109C,150C 'rust':19B 'segment':181C 'sound':186C 'state':8A,70B,178C 'still':151C 'subtre':126C,136C 'swap':132C 'use':190C 'version':198C 'virtual':30B 'vm':176C 'without':52B,143C 'x':94C 'zero':21B,28B 'zero-knowledg':27B 'zero-knowledge-proof':20B 'zkvm':2A,24B,82C","nicknames":[],"mitigations":[],"who_affected":"Teams that build or run OpenVM provers or verifiers on versions before 1.7.0 or on the affected 2.0 and 2.1 prereleases. The sources describe soundness of proofs that use persistent memory across continuation segments, so teams relying on OpenVM proofs for trust decisions are the ones who matter. Teams on fixed versions, or not using OpenVM, can skip it.","tier":"B","verified":{},"analyst_revisit_at":null,"fix_status":"available","audience":"developers","plain_action":null,"first_public_at":"2026-10-30T20:17:12+00:00","kev":null,"cvss_vector":"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/E:X/CR:X/IR:X/AR:X/MAV:X/MAC:X/MAT:X/MPR:X/MUI:X/MVC:X/MVI:X/MVA:X/MSC:X/MSI:X/MSA:X/S:X/AU:X/R:X/V:X/RE:X/U:X","cvss_by":"security-advisories@github.com","poc_count":0,"sources":[{"source":"nvd","external_id":"CVE-2026-62333","url":"https://nvd.nist.gov/vuln/detail/CVE-2026-62333","severity":null,"published_at":"2026-10-30T20:17:12+00:00","modified_at":"2026-10-30T20:17:12+00:00","first_seen_at":"2026-10-30T20:25:38+00:00","fetched_at":"2026-10-30T20:25:38+00:00","note":null}],"documents":[],"notice":"Free to read at a human pace. An API with keys and an MCP server are in preparation; early access: hello@infrastack.ai"}