Skip to main content

Klever-Go CVE-2026-82407

| EUVDEUVD-2026-85576 HIGH
Improper Input Validation (CWE-20)
2026-09-23 GitHub_M GHSA-9wh6-9hq7-9688
7.0
CVSS 4.0 · Vendor: GitHub_M
View

Attack ChainAIDerived

Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain

  1. Access
    Acquire validator submission privileges
  2. Delivery
    Submit Register/UpdateValidator with malformed BLSPublicKey
  3. Exploit
    Key accepted without curve/subgroup validation
  4. Execution
    Validator becomes eligible and selected into consensus group
  5. Persist
    MultiSigner.Reset fails to deserialize group key
  6. Impact
    Repeated missed rounds and consensus halt

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 submit a CreateValidatorContract (Register) or ValidatorConfig update (UpdateValidator) transaction on a Klever-Go node running a version prior to 1.7.20 - i.e. an actor with validator-registration capability (stake/gas), hence PR:L, not fully unauthenticated. The submitted BLSPublicKey must be malformed (not a valid, nonzero, prime-order-subgroup BLS12-381 G2 point). Crucially, impact is not immediate: the malformed-key validator must become ELIGIBLE and then be probabilistically SELECTED into a consensus group before MultiSigner.Reset fails (the AT:P gate). Genesis validators are NOT exploitable because the genesis path already runs CheckPublicKeyValid. The worst-case full halt only occurs when the consensus group equals the eligible validator set; larger validator sets suffer throughput degradation and missed rounds rather than a complete stop. The fix is additionally gated behind the FixAuditChangesV3 fork for deterministic historical block reprocessing.

Impact

This is a genuine but conditional availability-only risk, not a high-CVSS-but-hollow issue. The vendor CVSS 4.0 vector (AV:N/AC:L/AT:P/PR:L/UI:N/VA:H/SA:H, 7.0) correctly captures the essence: network-reachable, low-privilege (any actor able to submit a Register or UpdateValidator transaction, i.e. stake/gas to become a validator), no user interaction, pure availability impact (VA:H/SA:H, no confidentiality or integrity). The critical nuance is AT:P (Attack Requirements: Present) - exploitation is probabilistic because the malformed-key validator must actually be SELECTED into a consensus group before MultiSigner.Reset fails; this is a real gating condition that a raw 3.1 vector would express as AC:H. My independent 3.1 assessment is ~6.5 (AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:N/A:H), where S:C reflects one validator's bad key degrading the whole network's consensus throughput. Impact scales from missed rounds/throughput degradation up to a COMPLETE HALT when the consensus group equals the eligible validator set. No EPSS score, no CISA KEV listing, and no weaponized public exploit are present; a security regression test ships with the fix but that is not an attacker POC. Signals are consistent - moderate severity, availability-only, self-reported by the vendor - so this is a real priority for anyone running a Klever-Go validator, but the niche footprint and probabilistic selection gate keep real-world urgency moderate rather than critical.

Exploit ScenarioDerived

An attacker with enough stake/access to submit validator transactions registers (or updates) a validator supplying a BLSPublicKey that is not a valid BLS12-381 G2 curve point. Because pre-fork Register/UpdateValidator skip the curve/subgroup/nonzero checks (only genesis validation ran CheckPublicKeyValid), the malformed key is accepted; once that validator becomes eligible and is selected into a consensus group, MultiSigner.Reset cannot deserialize the group key and cancels the slot, causing repeated missed rounds and, if the consensus group equals the eligible set, a full network halt. No public exploit is identified at time of analysis.

This Week Schedule remediation this week. Why: HIGH severity (CVSS 7.0-8.9).
Patch available 0.4% exploitation probability (EPSS)

Get an e-mail when this CVE is exploited, patched or re-scored. Free account.

Alert me

AnalysisAIv1 – Sep 23, 2026

Missing BLS public key validation in Klever-Go prior to 1.7.20 allows a remote authenticated party with validator-registration capability (PR:L) to submit a CreateValidatorContract (Register) or ValidatorConfig update (UpdateValidator) containing a malformed BLSPublicKey that the runtime never checks for curve membership, prime-order subgroup, or nonzero value. Impact is delayed and conditional: the malformed-key validator must first become eligible and then be selected into a consensus group, at which point MultiSigner.Reset and the signature-verification creation path fail to deserialize the group key and cancel the slot, causing repeated missed consensus rounds and throughput degradation; a complete halt occurs only when the consensus group equals the eligible validator set. This is an availability-only, conditional risk - no public exploit identified at time of analysis, no KEV listing, and genesis-path validation is unaffected because it already calls CheckPublicKeyValid.

RemediationAI

Upgrade every Klever-Go node to 1.7.20 (https://github.com/klever-io/klever-go/releases/tag/v1.7.20), which is the vendor-released patch that adds BLS12-381 G2 curve/subgroup/nonzero/length validation via blsPublicKeyValidator and rejects bad keys with ErrInvalidBLSPublicKey and an ErrFieldInvalidBLSKey receipt on both Register and UpdateValidator; because the check is wrapped in the FixAuditChangesV3 fork gate, operators must also confirm that fork is activated on their network, otherwise validateBLSPublicKey still returns nil and registration remains unchecked. Before patching, or where a coordinated fork activation prevents immediate rollout, the most effective compensating control is to restrict who can submit validator registration/update transactions - gate the Register and UpdateValidator operations to a permissioned allowlist of known operator addresses at the mempool or application layer, accepting the trade-off that this reduces decentralisation and must be lifted once the patch and fork are live. Complement this by monitoring consensus telemetry for clustered missed rounds or cancelled slots tied to a recently registered validator and by pruning/quarantining any validator whose BLSPublicKey was registered before the fork activated; note that simply increasing the eligible validator set above the consensus group size mitigates the worst-case full halt (the halt requires consensus group == eligible set) but does nothing to stop the throughput degradation, and clients that merely filter traffic do not address the root cause since the failure occurs in the node's own MultiSigner path. If an affected validator is already in a consensus group and causing stalls, the practical emergency measure is to have that validator's owner register a corrected key via UpdateValidator on a 1.7.20 node or remove it from eligibility through governance, with the caveat that this requires chain-level action and may not be possible on a network already halted. Consult the GHSA advisory (https://github.com/klever-io/klever-go/security/advisories/GHSA-9wh6-9hq7-9688) for the vendor's own guidance.

Affected VersionsENISA

klever-go < 1.7.20

Affected Packages

go github.com/klever-io/klever-go fix: 1.7.20
euvd klever_go fix: 1.7.20

Source: OSV (Open Source Vulnerabilities)

Affects your stack

Affects 2 packages in go, euvd

Checking this CVE against your own stacks and servers is part of the Basic plan and up.

Technical ContextAI · show details

Klever-Go is the Go implementation of the Klever blockchain protocol, and the flaw is a classic CWE-20 improper input validation defect in the validator management kApp (core/kapp/validators/validators.go). BLS12-381 public keys used for consensus group signatures are G2 points and must be validated on three axes: the encoding must decode to a point actually on the curve, the point must lie in the prime-order subgroup (rejecting small-subgroup and invalid-curve points), and it must be nonzero and of the expected serialized length. The Register and UpdateValidator handlers previously stored the submitted BLSPublicKey verbatim; only the genesis path enforced CheckPublicKeyValid. When such a key enters an eligible validator set and that validator is selected into a consensus group, MultiSigner.Reset and the group-key deserialization path for signature verification cannot construct the aggregate/group key, so the slot is cancelled and no round completes. The upstream fix (commits 11606a90ccc289f93d0175994733229b332d9cff and 642da967893884d635986fed3c43bdc679cbfe8f) introduces a blsPublicKeyValidator interface backed by signing.NewKeyGenerator(mcl.NewSuiteBLS12()), adds a validateBLSPublicKey method that returns common.ErrInvalidBLSPublicKey, and emits an ErrFieldInvalidBLSKey receipt on rejection. Notably the new check is gated behind the FixAuditChangesV3 fork so that historical block reprocessing stays deterministic; the CPE cpe:2.3:a:klever-io:klever-go:*:*:*:*:*:*:*:* matches all releases before 1.7.20.

Know when Go 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

Vendor (GitHub_M) PRIMARY 7.0 HIGH
CVSS:4.0/AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H
vuln.today AI 6.3 MEDIUM

AC:H because the bad validator must be probabilistically selected into a consensus group; PR:L for validator-submission capability; S:C as one validator degrades network-wide consensus; availability-only impact.

3.1 AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:N/A:H
4.0 AV:N/AC:L/AT:P/PR:L/UI:N/VC:N/VI:N/VA:H/SC:N/SI:N/SA:H

Primary rating from Vendor (GitHub_M).

CVSS VectorVendor: GitHub_M

Attack Vector
Network
Attack Complexity
Low
Attack Requirements
Present
Privileges Required
Low
User Interaction
None
Vulnerable system: Confidentiality
None
Vulnerable system: Integrity
None
Vulnerable system: Availability
High
Subsequent system: Confidentiality
None
Subsequent system: Integrity
None
Subsequent system: Availability
High

Lifecycle Timeline

2
Patch available
Sep 23, 2026 - 20:03 EUVD
CVE Published
Sep 23, 2026 - 19:17 cve.org
HIGH 7.0

DescriptionCVE.org

Klever-Go is the Go implementation of the Klever blockchain protocol. Prior to 1.7.20, core/kapp/validators/validators.go Register and the runtime validator update path accept a submitted BLSPublicKey without curve, prime-order subgroup, or nonzero validation. When a validator with a malformed key becomes eligible and is selected into a consensus group, MultiSigner.Reset and the corresponding signature verification creation path cannot deserialize the group key and cancel the slot. This causes repeated missed rounds and throughput degradation, and a network whose consensus group equals the eligible validator set can halt completely. Genesis validation is not affected because that path already performs CheckPublicKeyValid. This issue is fixed in version 1.7.20.

Technical POC Analysis

CWE-20 (improper input validation) at the trust boundary of runtime validator registration.

Full technical POC analysis - root cause, step-by-step exploitation and patch breakdown - is part of the Pro and Business plans.

Executive ViewAI

Why It Matters

Klever-Go versions before 1.7.20 are exposed to an availability-only consensus flaw that can be triggered by an authenticated validator with registration privileges submitting a malformed BLS public key. If the affected validator becomes eligible and is selected into a consensus group, affected networks may experience repeated missed consensus rounds, throughput degradation, and-under specific conditions-a complete halt, making this a material operational risk for validator operators and network participants. A vendor patch is available, and no public exploit identified at time of analysis.

Business Impact: High
Compensating Controls

Apply vendor patch.

Threat Intelligence Overview

EPSS Score
0.4%
Top 65% exploitable
Prevalence
Low
niche open-source Go blockchain validator node, limited operator footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
4 sources
Confidence: Medium
EUVD NVD CVE.org EPSS Vulnrichment GHSA GitHub

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.

SignalValue
Severity HIGH
CISA KEV No
Public POC Yes
EPSS 0.4%
Patch available Yes
Active threat No
Deciding rule
HIGH severity (CVSS 7.0-8.9)
What every action level means
Emergency Immediate action required. Criteria: CRITICAL + in CISA KEV (actively exploited) without patch, OR CRITICAL + EPSS > 30% without patch, OR CRITICAL + active threat signals without patch.
Act Now Prioritize within 24-48h. Criteria: in KEV with patch available, OR CRITICAL + public POC, OR HIGH + EPSS > 10%, OR CRITICAL + active threat, OR any CRITICAL severity.
This Week Schedule remediation this week. Criteria: HIGH severity (CVSS 7.0-8.9). Patch within normal change window.
This Month Plan within 30 days. Criteria: MEDIUM severity (CVSS 4.0-6.9), lower exploitation probability. Include in regular patch cycle.
Monitor Track and reassess. Criteria: LOW severity (CVSS 0.1-3.9), minimal exploitation risk. No immediate action needed.

SSVC AssessmentENISA

SSVC Decision
Scheduled
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
High
Technical Impact
Partial

Priority Score

55
Low Medium High Critical
KEV: 0
EPSS: 0
CVSS: +35
PoC: +20
Weaponized: 0
Threat intel: 0
Gov advisory: 0

More in Go

View all
CVE-2023-44487 HIGH POC
7.5 Oct 10

Denial of service against HTTP/2 server implementations allows remote unauthenticated attackers to exhaust server resour

CVE-2016-5386 HIGH
8.1 Jul 19

The net/http package in Go through 1.6 does not attempt to address RFC 3875 section 4.1.18 namespace conflicts and there

CVE-2025-68121 CRITICAL POC
10.0 Feb 05

Critical certificate validation bypass in Go crypto/tls during session resumption. If ClientCAs or RootCAs fields are mu

CVE-2019-14809 CRITICAL POC
9.8 Aug 13

net/url in Go before 1.11.13 and 1.12.x before 1.12.8 mishandles malformed hosts in URLs, leading to an authorization by

CVE-2026-90942 CRITICAL POC
9.3 Sep 14

Casdoor through 4.4.0 exposes its instance-wide built-in JWT signing private key unmasked through the /api/get-certs and

CVE-2026-101090 CRITICAL POC
9.3 Sep 27

Host header injection in Nezha 2.2.3's OAuth2 redirect endpoint (/api/v1/oauth2/{provider}) allows an unauthenticated re

CVE-2026-78428 HIGH POC
8.8 Sep 17

Session cross-wiring in SUSE NeuVector before 5.6.1 allows an unauthenticated remote attacker to obtain another user's a

CVE-2026-92791 HIGH POC
8.7 Sep 16

Unauthenticated path traversal in Uber Kraken through 0.1.29 allows remote attackers to read files outside the configure

CVE-2018-7187 HIGH POC
8.8 Feb 16

The "go get" implementation in Go 1.9.4, when the -insecure command-line option is used, does not validate the import pa

CVE-2026-16651 HIGH POC
8.7 Sep 21

Denial of service in Temporal Server allows an authenticated caller holding at least namespace read permission to crash

CVE-2026-82405 HIGH POC
8.7 Sep 23

Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker

CVE-2026-82409 HIGH POC
8.4 Sep 23

Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r

This site uses cookies essential for authentication and security. No tracking or analytics cookies are used. Privacy Policy