Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
AccessReach verifier public-input boundary
-
DeliverySubmit non-canonical accumulator limbs
-
ExploitLimbs decoded without canonical bound check
-
ExecutionNative path hits assert/unwrap panic
-
ImpactVerifier crashes (denial of service)
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A05:2025 - Injection
ASVS 5.0
V2 - Validation and Business Logic Input validation, allowlisting
|
| Exploitation Conditions | Exploitation requires the ability to supply accumulator public-instance values (the scalars selected by accumulator_indices and passed to AccumulatorEncoding::from_repr) to a KZG-based SNARK verifier built from snark-verifier prior to 0.2.5. The concrete prerequisite is a deployment where accumulator limbs are NOT already constrained in-circuit before the verifier boundary: the vendor states that standard SDK aggregation circuits constrain these limbs beforehand, which is the primary limiting factor on real-world exploitability. The crash/DoS specifically affects the native verifier path (snark-verifier/src/pcs/kzg/accumulator.rs) via assertion/unwrap-based decoding; the EVM loader path (ec_point_from_limbs) instead accepted non-canonical encodings because validate_ec_point checked the reconstructed affine point rather than the original limb bounds. No authentication or user interaction is indicated by the vector (PR:N/UI:N). |
| Impact | This is a moderate, defense-in-depth hardening fix rather than a high-urgency emergency. The supplied CVSS 4.0 vector (AV:N/AC:L/AT:N/PR:N/UI:N) scores 6.9 and indicates a vulnerable system impact only to integrity (VI:L), with no confidentiality or availability metric set, yet the tags and the advisory itself describe a denial-of-service crash on the native verifier path - so the input signals are internally inconsistent about whether the primary impact is integrity (accepting non-canonical encodings) or availability (a panic/crash). No EPSS score, no CISA KEV listing, and no working PoC are present in the input; the only references are the fix commit, the v0.2.5 release, and the GHSA advisory. The vuln.today decision label is 'this_month' (not act_now/emergency), which is consistent with the vendor's own statement that standard SDK aggregation circuits constrain accumulator limbs before the verifier boundary, materially limiting practical exploitability. Net: treat as a scheduled-patch item, not a drop-everything priority - the network/unauthenticated reachability is real, but the real-world impact is bounded to deployments that feed unconstrained accumulator public inputs into the native verifier. |
| Exploit ScenarioDerived | An attacker who can supply the public-instance values to a KZG-based SNARK verifier crafts accumulator limbs that exceed the configured canonical limb bound. On the native verifier path these malformed limbs reach assertion/unwrap-based decoding and panic, crashing the verifier instead of returning a clean verification error; on the EVM path non-canonical encodings pass limb checking before point validation. No public exploit code is identified in the input, and exploitation requires a deployment that does not already constrain accumulator limbs in-circuit before this boundary. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Oct 30, 2026
The Rust snark-verifier library before 0.2.5 accepts non-canonical KZG accumulator limb encodings at the verifier boundary, and its native verifier path can be panicked by malformed accumulator public inputs rather than returning a verification error. Deployments are only exposed where accumulator limbs are not already constrained in-circuit before the verifier boundary: the vendor states standard SDK aggregation circuits do so, which is the primary limit on practical exploitability. No public exploit code and no confirmed active exploitation were identified at time of analysis; the issue is fixed in version 0.2.5.
RemediationAI
Upgrade to snark-verifier 0.2.5, the vendor-released fix, per https://github.com/axiom-crypto/snark-verifier/releases/tag/v0.2.5; the corresponding change is commit d6aaf66d4706f5317cf61d5dbe00c14e7fbdbb70 and the advisory is https://github.com/axiom-crypto/snark-verifier/security/advisories/GHSA-265x-v3qf-ff6p. After upgrading, regenerate any prebuilt EVM verifier code emitted by the loader so it includes the new per-limb bound checks, and rebuild native verifiers so malformed accumulator limbs return Error::InvalidInstances rather than panicking. If the upgrade cannot be applied immediately, the vendor's stated limiting factor can be turned into a control: ensure the aggregation circuit constrains every accumulator public-instance limb to the configured limb bound before the values reach AccumulatorEncoding::from_repr, which standard SDK aggregation circuits already do, so custom circuits that omit this constraint are the ones needing the added in-circuit range check (the trade-off is additional circuit constraints and proving cost). Where a native verifier processes untrusted public inputs and cannot be patched, run it in an isolated process with panic containment and restart supervision so that malformed inputs cause a contained verification failure rather than taking down the surrounding service; this does not correct the underlying accept/reject behaviour and adds operational overhead. No patch beyond 0.2.5 is required, and no further vendor workaround is documented.
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
snark-verifier is a generic (S)NARK verifier implemented in Rust, with both a native path (snark-verifier/src/pcs/kzg/accumulator.rs) and an EVM code-generation path (snark-verifier/src/loader/evm/loader.rs). In a KZG-based proof system, the accumulator is an elliptic-curve point whose coordinates are supplied as public-instance scalars; PlonkProof::read selects those scalars via accumulator_indices and hands them to AccumulatorEncoding::from_repr, where LimbsEncoding::from_repr splits each coordinate into fixed-width limbs. The root cause is CWE-20 (Improper Input Validation): the EVM loader reconstructed each coordinate from limbs using shl and add and then applied validate_ec_point to the resulting affine point, so the check covered the reconstructed point but never the original limb bounds; limbs wider than the configured BITS therefore slipped through as non-canonical encodings. The native path had a related robustness defect in which malformed limb encodings reached assertion- and unwrap-based decoding and caused a panic instead of a verification error. The upstream fix in commit d6aaf66d adds a limb_bound_check_code helper that emits a per-limb lt(limb, shl(bound_bits, 1)) (or iszero for zero-width remainder) check into the generated verifier code before reconstruction, and replaces the native decode with fe_from_limbs_checked, which validates the limb count, rejects any limb >= 2^BITS, rejects a composed value >= the field modulus, and converts the former asserts and unwraps into Error::InvalidInstances returns.
Know when Canonical gets its next vulnerability
- 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:L/VA:N/SC:N/SI:N/SA:N
Untrusted public inputs reach the verifier remotely with no auth or interaction (AV:N/AC:L/PR:N/UI:N); impact is limited to accepting non-canonical encodings (I:L) and a native-verifier panic (A:L), both bounded by in-circuit limb constraints.
Primary rating from Vendor (github).
CVSS VectorVendor: github
Lifecycle Timeline
1DescriptionCVE.org
SNARK Verifier is a generic (S)NARK verifier. Prior to 0.2.5, KZG accumulator public-instance limbs are decoded without consistently enforcing canonical limb bounds before elliptic-curve coordinate reconstruction. PlonkProof::read selects scalars using accumulator_indices and passes them to AccumulatorEncoding::from_repr. For the EVM loader, LimbsEncoding::from_repr forwards them to EvmLoader::ec_point_from_limbs in snark-verifier/src/loader/evm/loader.rs, where shl and add reconstruct coordinates before validate_ec_point checks the resulting affine point rather than the original limb bounds. The related native path in snark-verifier/src/pcs/kzg/accumulator.rs can reach assertion- or unwrap-based decoding and panic instead of returning a verification error. This allows noncanonical encodings at the verifier boundary and can crash the native verifier. Standard SDK aggregation circuits are expected to constrain accumulator limbs before this boundary, which limits practical exploitability. This issue is fixed in version 0.2.5.
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.
What every action level means
SSVC AssessmentENISA
Priority Score
Attack Technique
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Oracle Java SE JDK/JRE 7 and 6 Update 27 and earlier allows remote code execution with complete system compromise throug
In PHP versions 7.1.x below 7.1.33, 7.2.x below 7.2.24 and 7.3.x below 7.3.11 in certain configurations of FPM setup it
GNU Bash through 4.3 processes trailing strings after function definitions in the values of environment variables, which
Multiple vulnerabilities in Oracle Java 7 before Update 11 allow remote attackers to execute arbitrary code by (1) using
The (1) EPHEMERAL, (2) HTTPS, (3) MVG, (4) MSL, (5) TEXT, (6) SHOW, (7) WIN, and (8) PLT coders in ImageMagick before 6.
When running Apache Tomcat versions 9.0.0.M1 to 9.0.0, 8.5.0 to 8.5.22, 8.0.0.RC1 to 8.0.46 and 7.0.0 to 7.0.81 with HTT
Remote code execution is possible with Apache Tomcat before 6.0.48, 7.x before 7.0.73, 8.x before 8.0.39, 8.5.x before 8
GNU Bash through 4.3 bash43-025 processes trailing strings after certain malformed function definitions in the values of
The (1) TLS and (2) DTLS implementations in OpenSSL 1.0.1 before 1.0.1g do not properly handle Heartbeat Extension packe
Race condition in mm/gup.c in the Linux kernel 2.x through 4.x before 4.8.3 allows local users to gain privileges by lev
Unspecified vulnerability in the Java Runtime Environment (JRE) component in Oracle Java SE 7 Update 17 and earlier, and
Local privilege escalation in the GNU C Library (glibc) dynamic loader ld.so allows unprivileged local users on affected
EUVD-2026-114397
NVD
CVE.org
EPSS
GitHub
Exploit-DB