Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessCraft proofData with first 4 bytes matching an exposed selector
-
DeliverySubmit proof to generated OpenVmHalo2Verifier.verify
-
ExploitSelf staticcall dispatches to non-verifier function
-
ExecutionSuccessful return treated as proof acceptance
-
ImpactApplication accepts forged commitments and public values
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Unusual condition handling
|
| Exploitation Conditions | Exploitation requires that the target application deployed the Solidity verifier wrapper generated by an affected OpenVM version (before 1.7.0 in 1.x, or affected 2.0/2.1 prereleases) and calls OpenVmHalo2Verifier.verify to gate trust. The concrete trigger is attacker control of the first four bytes of proofData so they match a non-verifier external selector exposed by the same wrapper contract (notably the extra public getter selector that the fix removes); in a correct proof those four bytes are part of the first KZG accumulator limb and must be zero. Limiting factors: the vulnerability is confined to deployments using the generated wrapper, and the fix neutralizes it both by removing the collidable getter selector and by adding a defensive check that the first four proof bytes are zero before the self-call. No authentication or user interaction is required per CVSS (PR:N/UI:N), but there is no impact on confidentiality or availability. |
| Impact | The CVSS 4.0 score of 8.7 (High) is driven by AV:N/AC:L/AT:N/PR:N/UI:N with VI:H and VC:N/VA:N - meaning a remote, unauthenticated attacker can forge proof acceptance with low complexity, impacting integrity only (no confidentiality or availability loss). This is consistent with the advisory: a malformed proof can bypass the Halo2 fallback verifier, letting the wrapper accept arbitrary app commitments and public values. The vuln.today Decision label is 'this_week', indicating meaningful but not emergency urgency. Key signals are MISSING: no EPSS score was provided, there is no CISA KEV listing, and no working exploit code is referenced (the GitHub links are the fix commit, PR #151, release tags, and the GHSA advisory - patch/advisory material, not a published exploit). The CVSS integrity-only profile directly CONTRADICTS the single input Tag 'Information Disclosure': with VC:N this is a proof-verification/integrity bypass, not a confidentiality issue - treat the tag as unreliable. Real-world priority is moderated by low deployment footprint (OpenVM is a niche zkVM framework) and by the precondition that the victim must have deployed the generated Solidity verifier wrapper on-chain; however, for any affected deployment the impact is severe because the entire zero-knowledge proof trust assumption is defeated. |
| Exploit ScenarioDerived | An attacker interacting with a smart-contract application that deployed the generated OpenVmHalo2Verifier wrapper crafts proofData whose first four bytes collide with another external selector exposed by the wrapper. Calling verify triggers a staticcall to address(this) that dispatches to the benign non-verifier function, which returns successfully, so the wrapper accepts a forged proof and arbitrary app commitments/public values without ever running the Halo2 verifier. No public working exploit is referenced, but the GHSA advisory describes the mechanism in enough detail to reconstruct it, and the attack is remote and unauthenticated (AV:N/PR:N/AC:L). |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
Proof verification bypass in OpenVM's generated Solidity OpenVmHalo2Verifier allows remote, unauthenticated attackers to get malformed proof data treated as valid, so integrating applications can accept arbitrary app commitments and public values without the Halo2 proof suffix, accumulator, app commitments, or public values being checked. The issue affects OpenVM SDK users who deployed the generated wrapper from 1.x before 1.7.0 and from affected 2.0/2.1 prereleases, and is fixed in 1.7.0, 2.0.0-rc.3 and 2.1.0-preview. No public exploit is identified at time of analysis and no CISA KEV entry is present in the supplied data; the independent assessment rates integrity impact High with no confidentiality or availability impact.
RemediationAI
Upgrade OpenVM SDK to 1.7.0, 2.0.0-rc.3, or 2.1.0-preview as appropriate, then regenerate the Solidity wrapper and redeploy or migrate any contract that calls OpenVmHalo2Verifier.verify; because the vulnerable behavior is in deployed wrapper bytecode, upgrading the Rust dependency alone does not change an already deployed contract. The fixed wrapper removes the collidable public getter and checks that the first four proof bytes are zero before the self-call, so integrations must point to the newly generated verifier address. See GHSA-j29p-wr24-hp4f at https://github.com/openvm-org/openvm/security/advisories/GHSA-j29p-wr24-hp4f and the fixed release tags for details. No separate workaround beyond using the fixed wrapper is identified in the supplied sources.
Affected VersionsENISA
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in euvd
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
OpenVM is a zkVM framework whose SDK emits a Solidity Halo2 verifier wrapper. OpenVmHalo2Verifier.verify assembles raw calldata for the generated snark-verifier Halo2 fallback verifier and performs a staticcall to address(this), treating any successful call as proof acceptance. Because that calldata begins with user-controlled proofData, the first four bytes can match another external selector exposed by the same wrapper-specifically the extra public getter selector removed by the fix-causing EVM selector dispatch to invoke a successful non-verifier function instead of the Halo2 verifier. In a valid proof layout those first four bytes are part of the first KZG accumulator limb and must be zero. The fix removes the collidable getter selector and adds a defensive check that the first four proof bytes are zero before the self-call. CWE-754 (Improper Check for Unusual or Exceptional Conditions) corresponds to the failure to verify that the self-call actually reached the intended verifier and returned a meaningful result. The supplied tag says Information Disclosure, but the advisory and independent assessment describe an integrity-only proof-forgery impact, with no confidentiality or availability loss.
Know when the next one hits your stack
- Watch products and get an email when something new is published
- Check this CVE against your own stack and servers
- Exploit and PoC references, threat intelligence from 22 sources
No credit card · 7-day full trial
Severity by source
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
Remote unauthenticated call to verify with attacker-controlled proof bytes (AV:N/AC:L/PR:N/UI:N); forged proof acceptance is integrity-only (I:H), with no confidentiality or availability impact.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
2DescriptionCVE.org
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.
Technical POC Analysis
CWE-754 (Improper Check for Unusual or Exceptional Conditions), per the CVE record; note the GHSA itself lists "No CWEs".
Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.
Executive ViewAI
A high-severity proof verification bypass in OpenVM's generated Solidity verifier (OpenVmHalo2Verifier) allows attackers to submit malformed proofs that are incorrectly accepted, undermining the integrity of any application relying on this component. Organizations using affected OpenVM SDK versions (1.x before 1.7.0 and 2.0/2.1 prereleases) may face unauthorized acceptance of false commitments or values, eroding trust in their zero-knowledge proof systems.
Apply vendor patch.
Threat Intelligence Overview
How this decision was reached
The engine reads each signal below and applies a fixed list of rules from top to bottom. The first rule that matches sets the recommended action – like a statement, every line is shown.
EUVD-2026-114441
NVD
CVE.org
EPSS
Vulnrichment
GitHub
Exploit-DB