Klever-Go: Unauthenticated nil-pointer DoS in P2P transaction validation can halt the chain
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.
- Products
- Not specified
- Affected versions
- Not specified
- Fixed versions
- Not specified
- CVEs
- CVE-2026-52878
- Confirmed fixed CVEs
- Not specified
- Updated in this feed
- 3 Nov 2026, 01:42 UTC · Revision 1
Source evidence
Klever-Go: Unauthenticated nil-pointer DoS in P2P transaction validation can halt the chain
core-osv · Original sourcePublished 7 Aug 2026, 22:32 UTC
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.
osv:CVE-2026-52878
Complete source record
{
"id": "09d8ec3e22d742e56aa97f0360c71563bd7d6e970260ae60e5fd01d7273dfea7",
"url": "https://osv.dev/vulnerability/CVE-2026-52878",
"method": "structured",
"payload": {
"kind": "advisory",
"title": "Klever-Go: Unauthenticated nil-pointer DoS in P2P transaction validation can halt the chain",
"summary": "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.",
"evidence": "osv:CVE-2026-52878",
"products": [],
"severity": "high",
"structured": {
"id": "CVE-2026-52878",
"aliases": [
"CVE-2026-52878",
"GHSA-rm5c-5x2p-48wr",
"GO-2026-5628"
],
"metrics": [
{
"type": "CVSS_V3",
"score": "CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:N/A:H"
}
],
"affected": [
{
"ranges": [
{
"repo": "https://github.com/klever-io/klever-go",
"type": "GIT",
"events": [
{
"introduced": "22769b30dd782ca7925b356c18471b7bd70ed437"
},
{
"fixed": "785b77ccb27162506c888cb62657cd7117d23126"
}
],
"database_specific": {
"extracted_events": [
{
"range": [
{
"introduced": "1.7.14"
},
{
"fixed": "1.7.18"
}
],
"source": "AFFECTED_FIELD",
"strategy": "StringRangeExpression"
},
{
"range": [
{
"fixed": "785b77ccb27162506c888cb62657cd7117d23126"
}
],
"source": "REFERENCES_TAG",
"original_tag": "v1.7.18"
}
]
}
}
],
"versions": [
"v1.7.17",
"v1.7.16",
"v1.7.15",
"v1.7.14"
],
"database_specific": {
"source": "https://storage.googleapis.com/cve-osv-conversion/osv-output/CVE-2026-52878.json"
}
}
],
"modified": "2026-10-28T02:30:25.109791692Z",
"provider": "osv",
"references": [
"https://github.com/klever-io/klever-go/releases/tag/v1.7.18",
"https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52878.json",
"https://github.com/klever-io/klever-go/security/advisories/GHSA-rm5c-5x2p-48wr",
"https://nvd.nist.gov/vuln/detail/CVE-2026-52878"
],
"provider_metadata": {
"cwe_ids": [
"CWE-476"
],
"cna_assigner": "GitHub_M",
"osv_generated_from": "https://github.com/CVEProject/cvelistV5/tree/main/cves/2026/52xxx/CVE-2026-52878.json"
}
},
"related_cves": [
{
"value": "CVE-2026-52878",
"evidence": "/id"
}
],
"security_relevant": true,
"severity_evidence": "/severity/0/score"
},
"source_id": "core-osv",
"document_id": 491701,
"published_at": "2026-08-07T22:32:27.34+00:00"
}