Klever-Go
CVE-2026-52878
HIGH
Attack ChainAIDerived
Hypothetical attack flow derived from CVE metadata – not a confirmed exploit chain
-
ReconConnect to target node libp2p P2P port
-
DeliveryCraft 3-byte protobuf Transaction with nil RawData
-
ExploitPublish message to transaction gossip topic
-
InstallSynchronous pubsub validator dereferences nil RawData.Version
-
C2Node process panics and crashes
-
ExecuteRepeat across BLS validator set
-
ImpactChain halt achieved
Vulnerability Assessment
| Weakness |
CWE
OWASP Top 10:2025
A10:2025 - Mishandling of Exceptional Conditions
ASVS 5.0
V16 - Security Logging and Error Handling Null pointer safety, defensive checks
MITRE ATT&CK
1 technique across 1 tactic: Impact The technique list with ATT&CK links and the kill-chain view is part of the Basic plan and up. |
| Exploitation Conditions | The target node must be running Klever-Go version 1.7.14, 1.7.15, 1.7.16, or 1.7.17. No special feature flag, non-default configuration, or elevated account permission is required - all nodes in these version ranges process incoming transaction gossip through the vulnerable path by default as part of normal P2P operation. Per the CVSS vector (PR:N), exploitation is unauthenticated; no on-chain account, validator key, stake, or funds are needed. The attacker must be able to deliver a message to the target node's libp2p P2P gossip port, which is a standard network-reachable condition for any participant in the Klever P2P overlay. The only factor limiting exploitation is network reachability: nodes behind strict firewalls that whitelist P2P peers to a known allowlist have a reduced but not eliminated attack surface, since the allowlist itself could contain attacker-controlled or compromised peers. |
| Impact | The CVSS 3.1 vector (AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H, score 7.5) accurately reflects the mechanics: the attack is trivially network-delivered, requires zero authentication or complexity, and achieves complete availability loss on the targeted node. The individual-node score undersells the systemic risk - because Klever uses a BLS validator set for consensus, an attacker who crashes enough validators in sequence or simultaneously can halt block production entirely. The 3-byte minimum payload makes bandwidth cost negligible for sustained or distributed delivery. No EPSS score was provided in the input data, so probabilistic exploitation likelihood cannot be quantified independently. No CISA KEV listing was identified, meaning confirmed active exploitation in the wild is unverified; however, the vendor's coordinated release language ('upgrade all nodes promptly') and the zero-prerequisites nature of the attack suggest operators should treat this as an active-threat priority regardless. There are no conflicting signals between the CVSS vector and the technical description - both align consistently on network-reachable, unauthenticated, availability-only impact. |
| Exploit ScenarioDerived | An attacker with access to the Klever P2P network (any standard network peer) constructs a minimal 3-byte protobuf-encoded Transaction message in which the RawData embedded field is intentionally omitted, then gossips it to a target node via the libp2p pubsub transaction topic. The receiving node's synchronous validator dereferences the nil RawData pointer, panics, and the process terminates immediately without logging a recoverable error. By scripting this delivery against a list of known validator endpoints in rapid succession, the attacker drains the active BLS validator set below the threshold required for block production, causing a chain halt until operators manually restart nodes on a patched version. |
Get an e-mail when this CVE is exploited, patched or re-scored. Free account.
Alert meAnalysisAIv1 – Aug 07, 2026
Unauthenticated remote crash in Klever-Go versions 1.7.14-1.7.17 allows any network peer to terminate a node process by gossiping a 3-byte protobuf Transaction with the RawData sub-message omitted, triggering a nil-pointer dereference in the synchronous P2P validation callback with no panic recovery. No account, stake, validator key, or funds are required - the attacker only needs network reachability to the libp2p gossip port. Repeated delivery targeting enough BLS validators can halt block production entirely, constituting a chain-halt attack against the Klever network. No public exploit code or CISA KEV listing was identified, but the trivial payload and zero-prerequisite nature of exploitation make this a high-urgency upgrade target.
RemediationAI
Upgrade all Klever-Go nodes to version 1.7.18 immediately; the vendor confirms no configuration changes or data migration are required, and v1.7.18 is consensus-compatible with v1.7.17 (https://github.com/klever-io/klever-go/releases/tag/v1.7.18). The fix for GHSA-rm5c-5x2p-48wr adds a nil check before the tx.RawData.Version dereference in txVersionChecker.CheckTxVersion. If immediate upgrade is operationally blocked, restrict the libp2p P2P gossip port at the network perimeter to a static allowlist of known trusted peers - this reduces the attack surface by preventing arbitrary network participants from delivering the crafted message, but does not eliminate risk from compromised or malicious peers already in the peer list. Note that perimeter filtering also restricts honest peer discovery, which may degrade network participation and block sync performance as a trade-off. Adding a recover() wrapper in the pubsub callback as a temporary patch is a viable defensive-in-depth measure but should not substitute for the upstream nil-check fix.
Affected Packages
Source: OSV (Open Source Vulnerabilities)
Affects your stack
Affects 1 package in go
Checking this CVE against your own stacks and servers is part of the Basic plan and up.
Technical ContextAI · show details
The root cause is CWE-476 (NULL Pointer Dereference) in core/versioning/txVersionChecker.go:22, where tx.RawData.Version is field-accessed without a nil guard. Go's protobuf runtime decodes an omitted embedded sub-message as a nil pointer rather than a zero-value struct, so a Transaction with no RawData field yields tx.RawData == nil. The dereference occurs inside txVersionChecker.CheckTxVersion, which is the first call inside integrity(), itself called from InterceptedTransaction.CheckValidity - all running synchronously within the libp2p pubsub topic-validator callback on the transaction gossip topic. The full unrecovered call stack is: libp2p pubsubCallback (netMessenger.go) → MultiDataInterceptor.ProcessReceivedMessage (multiDataInterceptor.go:171) → interceptedData (multiDataInterceptor.go:223) → InterceptedTransaction.CheckValidity (interceptedTransaction.go:154) → integrity() (interceptedTransaction.go:203) → txVersionChecker.CheckTxVersion (txVersionChecker.go:22). No frame in this chain installs a recover(), so the Go runtime panic is not caught and terminates the entire node process. Affected CPE: cpe:2.3:a:klever-io:klever-go:*:*:*:*:*:*:*:* for versions 1.7.14 through 1.7.17.
Know when Klever 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
AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H
AV:N/AC:L/PR:N because any network-reachable peer can deliver the payload with no credentials or setup; A:H because the nil-pointer panic terminates the node process entirely; C and I remain N as there is no data disclosure or integrity impact.
Primary rating from Vendor (GitHub_M).
CVSS VectorVendor: GitHub_M
DescriptionCVE.org
Klever-Go is the Go implementation of the Klever blockchain protocol. Versions 1.7.14 through 1.7.17 are vulnerable to a nil-pointer panic triggered by a protobuf Transaction whose embedded RawData sub-message is omitted. This omission causes RawData to decode to nil. Every transaction gossiped on the Klever-Go P2P network is decoded and validated synchronously inside the libp2p pubsub topic-validator callback, where txVersionChecker.CheckTxVersion dereferences tx.RawData.Version with no nil check. Because the libp2p pubsub callback, the underlying go-libp2p-pubsub validation worker, and Klever's own network/p2p layer install no recover(), the panic propagates and crashes the entire node process. The attacker payload is a 3-byte protobuf message; no validator key, stake, funds, or on-chain account is required, and delivery aimed at enough of the BLS validator set can halt block production, resulting in a chain halt. This issue has been fixed in version 1.7.18.
Executive ViewAI
Klever-Go versions 1.7.14-1.7.17 contain a critical vulnerability allowing any internet-connected attacker to remotely crash validator nodes and halt blockchain consensus without credentials, requiring only network access to the gossip port. This creates immediate operational risk across the entire Klever network, as coordinated attacks could disable block production and prevent all transactions network-wide.
Until vendor patch is released: implement firewall rules restricting libp2p gossip port network access to whitelisted internal and known peer IP addresses only; deploy network intrusion detection signatures for malformed Transaction protobuf messages; enable comprehensive P2P node logging and establish continuous monitoring for abnormal connection patterns or process crashes; conduct regular network segmentation validation to ensure gossip port isolation is maintained.
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
A null pointer dereference occurs when a program attempts to access memory through a pointer that has been set to NULL (address 0x0).
Denial of Service attacks render applications or systems unavailable by overwhelming resources or triggering failure conditions.
Affected Products (CPE)CVE.org
Integer overflow in Klever-Go's semi-fungible token (SFT) add-quantity path prior to version 1.7.19 allows a mint-role h
Account takeover in Klever-Go's KleverUpdateAccountPermission built-in (all versions prior to 1.7.20) allows an attacker
Maliciously crafted on-chain account names processed by Klever-Go prior to 1.7.20 are spliced into Elasticsearch _bulk r
Improper enforcement of the marketplace settlement workflow in Klever-Go prior to 1.7.20 lets an authenticated seller se
Unbounded goroutine exhaustion in Klever-Go versions 1.7.14-1.7.17 allows any connected libp2p peer to remotely degrade
Consensus quorum bypass in Klever-Go prior to v1.7.20 allows a low-privileged block producer to satisfy the two-thirds v
Missing BLS public key validation in Klever-Go prior to 1.7.20 allows a remote authenticated party with validator-regist
Same weakness CWE-476 – NULL Pointer Dereference
View allSame technique Denial Of Service
View allVendor StatusVendor
SUSE
Severity: Important| Product | Status |
|---|---|
| SUSE Linux Enterprise Server 16.1 | Affected |
| SUSE Linux Enterprise Server for SAP applications 16.1 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP5 | Affected |
| SUSE Linux Enterprise Module for Package Hub 15 SP6 | Affected |
| openSUSE Leap 15.5 | Affected |
| openSUSE Leap 15.6 | Affected |
NVD
CVE.org
EPSS
GitHub
VulDB
Exploit-DB