Skip to main content

klever-go CVE-2026-54754

| EUVDEUVD-2026-67824 CRITICAL
Integer Underflow (CWE-191)
2026-08-28 https://github.com/klever-io/klever-go GHSA-p7gw-2pcp-5pf8
9.6
CVSS 3.1 · Vendor: https://github.com/klever-io/klever-go
View

Attack ChainAIDerived

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

  1. Access
    Create own NFT collection + marketplace
  2. Delivery
    List NFT with referral 100% (passes Sell check)
  3. Exploit
    Raise asset royalty via UpdateRoyalties
  4. Execution
    Self-buy via MarketBuy/Claim, remainder underflows
  5. Impact
    Mint surplus KLV to attacker addresses

Vulnerability Assessment

Weakness
CWE
ASVS 5.0
V15 - Secure Coding and Architecture Integer underflow checks
Exploitation Conditions

The attacker must control the asset being sold (so they can mutate its royalty) - i.e. own a self-issued NFT collection with a royalties address they control - plus a marketplace they configured with ReferralPercentage = 100% (10000) and a referral address they control. The concrete abuse sequence: list at a combined referral%+royalty% of exactly 100% so the Sell-time check passes, then invoke AssetTrigger/UpdateRoyalties to raise the live asset royalty MarketPercentage (e.g. to 100%), which is accepted because only a per-field <=100% check runs and the open listing's snapshotted referral is never re-evaluated; at the next MarketBuy/BuyItNow or auction Claim, live royalty + snapshotted referral exceed 100% and the overflow is minted. Limiting factors: exploitation requires a funded account (PR:L) able to pay collection-create, marketplace-create, and tx fees, and control of both the asset and marketplace (self-dealing setup), and only affects nodes before v1.7.19 or before the FixMarketBuyOverflow epoch activates; no user interaction is needed and it is triggerable by any standard client (operator CLI, SDK, or hand-signed curl).

Impact

This is a genuine top-priority issue, not a high-CVSS-but-low-real-risk case. The CVSS 3.1 vector (AV:N/AC:L/PR:L/UI:N/S:C, 9.6) indicates a network-reachable, low-complexity attack needing only a low-privilege (ordinary funded) account and no user interaction, with a scope change reflecting impact to the whole chain's economic state beyond the attacker's own account. No EPSS score was provided in the input, and the CVE is not indicated as CISA KEV-listed; however, the vendor advisory and the community monitoring project (kpulse.tech) both document real mainnet exploitation that minted tens of millions of KLV and off-ramped roughly $72K via bridge before an emergency guard halted it, and a deterministic regression-test exploit is committed to the repository - so the exploitation evidence is far stronger than the absent EPSS/KEV signals would suggest. The signals are consistent rather than conflicting: critical CVSS, confirmed active abuse, and working exploit code all point the same way. Any operator running a node older than v1.7.19 (or with the FixMarketBuyOverflow epoch not yet activated) should treat patching as urgent, since the mint is repeatable for only transaction fees.

Exploit ScenarioDerived

An attacker registers an NFT collection and a marketplace they fully control, lists an NFT with referral set to 100% (royalty 0%, so the combined check passes at Sell), then raises the asset's royalty MarketPercentage to 100% via AssetTrigger/UpdateRoyalties, and finally buys their own listing over the public /transaction/send RPC. Settlement pays the referral cut (one bid) and the royalty cut (one bid) in full while silently skipping the now-negative seller remainder, minting one full bid of KLV to attacker-controlled addresses per settlement, repeatable for only transaction fees. A deterministic regression-test proof-of-concept (TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation) is committed and runnable.

Act Now Prioritize within 24-48h. Why: CRITICAL severity + public POC available.
Patch available 0.3% exploitation probability (EPSS)

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

Alert me

AnalysisAIv1 – Aug 28, 2026

Ledger value-creation (KLV minting) in Klever's marketplace settlement affects the klever-go node prior to v1.7.19: because referral and royalty cuts are paid in full while a negative seller remainder is silently dropped, any funded account can settle a self-dealt order whose referral% + royalty% exceeds 100% and mint the surplus into attacker-controlled addresses. Exploitation requires only an ordinary account (PR:L) reachable over the public transaction RPC (CVSS 9.6). Committed regression-test exploit code exists, and the vendor advisory (GHSA-p7gw-2pcp-5pf8) and community monitoring document active mainnet exploitation that minted tens of millions of KLV before an emergency guard was deployed, though this CVE is not listed in CISA KEV.

RemediationAI

Primary fix: upgrade the node to the vendor-released patch version 1.7.19 (patch commit https://github.com/klever-io/klever-go/commit/8bcc600b0ac88070740c63c7ce1c8a968dd85251; advisory https://github.com/klever-io/klever-go/security/advisories/GHSA-p7gw-2pcp-5pf8). The consensus fix rejects settlement when marketOwnerAmount < 0 before any payout runs (Transaction_AmountInvalid) and is gated behind the FixMarketBuyOverflow activation-epoch flag, so operators must set that activation epoch to a FUTURE epoch in enableEpochs config - never genesis or a past epoch, or an import-db/re-sync reindex will replay historical txs and diverge from chain history. As an immediate, fork-proof compensating control before the epoch activates, deploy the emergency guard (common/emergencyGuard.go / frozenAccounts) that keeps the known attacker senders and MarketBuy/Sell/CreateMarketplace/ConfigMarketplace operations out of proposed blocks and refuses them at the node API; its trade-off is that coverage equals the share of block producers running the guard, since it does not change block validity. Recommended hardening beyond the shipped guard: snapshot the royalty% into MarketOrderData at Sell (as referral already is) to eliminate the TOCTOU, treat a negative seller remainder as a hard error everywhere (only exactly 0 as a no-op), and assert conservation (referral + royalties + ownerShare == bid) so any drift aborts the transaction - note the guard here checks only marketOwnerAmount, not intra-split over-payments tracked separately under GHSA-cgc5-v3f2-8m2v.

Affected VersionsENISA

klever-go < 1.7.19

Affected Packages

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

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

The affected technology is the Klever blockchain node (klever-go, a Go implementation), specifically the marketplace KApp settlement path in core/kapp/market/market.go (executeBuyMarket, computeReferralAmount, computeRoyaltiesAmount, computeMarketOwnerAmount). The root-cause class maps to CWE-191 (integer underflow): the signed computation marketOwnerAmount = CurrentBid − referralAmount − royaltiesAmount underflows to a negative value, and computeMarketOwnerAmount returns Ok while paying nothing when the remainder is <= 0. Because referral and royalty recipients are credited via AddToBalance for their full computed cuts against only a single buyer debit, value conservation breaks and the difference is effectively minted with no tracked Mint (so booked supply is unchanged and the inflation is off-the-books). The core defect is a time-of-check/time-of-use gap: the combined referral% + royalty% <= 100% invariant is checked only at listing time (Sell), referral% is snapshotted into MarketOrderData, but royalty% is never snapshotted and is read live from the mutable asset (asset.Royalties.MarketPercentage), which the asset owner can raise afterward via AssetTrigger → UpdateRoyalties with only a per-field <=100% check. Note: the input Tags label this 'Buffer Overflow, Integer Overflow,' but this is not a memory-safety buffer overflow - it is a logic/underflow value-conservation flaw.

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

Vendor (https://github.com/klever-io/klever-go) PRIMARY 9.6 CRITICAL
AV:N/AC:L/PR:L/UI:N/S:C/C:N/I:H/A:H
vuln.today AI 7.7 HIGH

Any funded account exploits it over the public RPC (AV:N/AC:L/PR:L, UI:N); impact is ledger-supply integrity affecting the whole chain (I:H, S:C), with no confidentiality and no direct node-availability loss (I differ from the vendor's A:H).

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

Primary rating from Vendor (https://github.com/klever-io/klever-go).

CVSS VectorVendor: https://github.com/klever-io/klever-go

Attack Vector
Network
Attack Complexity
Low
Privileges Required
Low
User Interaction
None
Scope
Changed
Confidentiality
None
Integrity
High
Availability
High

DescriptionCVE.org

Summary

When a marketplace order is settled (MarketBuy / BuyItNow, and auction Claim), the buyer's payment is split three ways - referral, royalties, and the seller (market-order owner) remainder:

marketOwnerAmount = CurrentBid − referralAmount − royaltiesAmount

Referral and royalties are paid out unconditionally, but the seller remainder is only paid when positive (computeMarketOwnerAmount returns Ok and pays nothing when the amount is <= 0). When referral% + royalty% exceeds 100% of the bid, marketOwnerAmount goes negative and is silently skipped - so the marketplace pays out more KLV / sale currency than the buyer paid in, minting the difference out of thin air.

The combined ceiling royalty% + referral% <= 100% is checked once, at listing time (Sell). But the two percentages are sourced asymmetrically at settlement:

  • referral % is snapshotted into the order at Sell (MarketOrderData.ReferralPercentage);
  • royalty % is never snapshotted - it is read live from the asset at buy time

(asset.Royalties.MarketPercentage).

So the listing-time invariant is a time-of-check/time-of-use guarantee only. After a valid listing, the asset owner raises the royalty MarketPercentage via AssetTrigger → UpdateRoyalties; at the next buy the live royalty plus the snapshotted referral exceed 100%, and the settlement mints the overflow. The minted funds land in attacker-controlled referral / royalty addresses.

This was actively exploited on mainnet (see *Evidence*), minting tens of millions of KLV before the emergency guard was deployed.

Affected component

  • Repository: klever-io/klever-go (node).
  • Settlement / mint site: core/kapp/market/market.go - executeBuyMarket (L575+),

computeReferralAmount (L361+), computeRoyaltiesAmount (L490+), computeRoyaltiesFixedDeposit (L443+), computeMarketOwnerAmount (L540+).

  • TOCTOU sources: Sell combined check (market.go:908), order snapshot of referral but not

royalty (market.go:997), live royalty mutation via core/kapp/kda/trigger.go - handleUpdateRoyaltiesNFTandSFT (L613+, sets asset.Royalties.MarketPercentage at L670).

  • Reachable from both Buy (BuyItNow, market.go:204+) and auction Claim

(market.go:705, market.go:731).

  • Pre-fix: not gated by any fork flag - exploitable on mainnet. The fix is gated behind the new

FixMarketBuyOverflow activation-epoch flag.

---

Root cause

1. Settlement pays referral + royalty unconditionally, seller remainder only if positive

core/kapp/market/market.go - executeBuyMarket (L575+):

go
referralAmount, _  := tools.ComputePercentageI64(marketOrder.CurrentBid,
                          int64(marketOrder.ReferralPercentage), ...)        // L583: SNAPSHOT referral %
royaltiesAmount, _ := tools.ComputePercentageI64(marketOrder.CurrentBid,
                          int64(asset.Royalties.MarketPercentage), ...)      // L587: LIVE royalty %
marketOwnerAmount := marketOrder.CurrentBid - referralAmount - royaltiesAmount  // L591: can go negative

// ---- FIX (FixMarketBuyOverflow), added by the patch ----
if m.forkController.FixMarketBuyOverflow() && marketOwnerAmount < 0 {         // L593-596
    ctx.Receipts().AddError(ctx.ContractID(), common.ErrFieldInvalidRoyalties, common.ErrInvalidValue.Error())
    return transaction.Transaction_AmountInvalid, common.ErrInvalidValue
}

m.computeReferralAmount(ctx, marketOrder, referralAmount, currencyID)   // pays referral in full
m.computeRoyaltiesFixedDeposit(ctx, marketOrder, asset)                 // pays fixed royalty (KLV)
m.computeRoyaltiesAmount(ctx, marketOrder, asset, currencyID, royaltiesAmount) // pays % royalty in full
m.computeMarketOwnerAmount(ctx, marketOrder, currencyID, marketOwnerAmount)    // <-- skips when <= 0

computeMarketOwnerAmount (L540-542) - the silent skip:

go
func (m *marketKapp) computeMarketOwnerAmount(... marketOwnerAmount int64) (... , error) {
	if marketOwnerAmount <= 0 {
		return transaction.Transaction_Ok, nil   // negative seller share dropped, NO error
	}
	// ... AddToBalance(marketOwnerAmount) ...
}

Meanwhile computeReferralAmount (L376) and computeRoyaltiesAmount (L515) each AddToBalance(...) the full computed amount with no matching debit from the buyer beyond the single bidderAcc.SubFromBalance(amount) taken in Buy (market.go:301).

Conservation breaks: buyer is debited bid once; recipients are credited referralAmount + royaltiesAmount. When that sum > bid, the surplus (referralAmount + royaltiesAmount − bid) is minted.

2. The combined ≤100% invariant is enforced only at listing time

Sell (market.go:908) correctly rejects a listing whose combined cut exceeds 100%:

go
if asset.Royalties.MarketPercentage + marketplace.ReferralPercentage > core.HundredPercent {
	return transaction.Transaction_ParameterInvalid, common.ErrInvalidValue
}

…and snapshots referral into the order, but not royalty (market.go:997-998):

go
marketOrder := &kapps.MarketOrderData{
	// ...
	ReferralPercentage:    marketplace.ReferralPercentage, // snapshotted
	RoyaltiesFixedDeposit: asset.Royalties.MarketFixed,    // snapshotted
	// NOTE: asset.Royalties.MarketPercentage is NOT snapshotted -> read live at buy
}

MarketOrderData has no field for the royalty percentage (kapps/market.pb.go), so settlement always re-reads it live from the (mutable) asset.

3. Royalty % is mutable after listing

core/kapp/kda/trigger.go - handleUpdateRoyaltiesNFTandSFT (L613+) lets the asset owner overwrite asset.Royalties.MarketPercentage (L670) with only a per-field <= 100% check (CheckValid100Params, L651) - it has no knowledge of any outstanding marketplace listing's snapshotted referral. So the owner can list at, e.g., referral 100% / royalty 0% (sum 100%, passes Sell), then raise royalty to 100%, making the buy-time sum 200%.

> The shipped emergency-guard source documents this exact vector: > *"The royalty percentage is read live at buy time, so a listing made now can be weaponised later > via UpdateRoyalties."* (common/emergencyGuard.go)

Net effect: referralAmount + royaltiesAmount = bid + bid = 2·bid; marketOwnerAmount = −bid (skipped); bid KLV minted per settlement, paid to attacker-controlled addresses.

---

Proof of Concept

A. Committed regression test (deterministic, runnable today)

core/kapp/market/market_test.go - TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation. It builds an order with ReferralPercentage = 100% and an asset with MarketPercentage = 100% (the attacker is both the referral and the royalty address), then settles a bid of 25,600,000 KLV (25600000000000 base units):

bash
go test ./core/kapp/market/ -run TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation -v
  • FixDisabled_MintsKLVFromThinAir: settlement returns Ok; the attacker address ends with

2·bid credited while only bid was paid in - i.e. bid KLV minted.

  • FixEnabled_RejectsInflation: with FixMarketBuyOverflow on, settlement returns

Transaction_AmountInvalid and the attacker balance stays 0 - no payout runs.

B. End-to-end on a local node (the real attack path)

A single-node local network is sufficient. The exploit is four transactions from one ordinary funded account; nothing privileged is required.

  1. Create an NFT collection you own, with royalties.marketPercentage = 0 and a royalties

address you control.

  1. Create a marketplace with referralPercentage = 10000 (100%) and a referral address you

control (CreateMarketplace).

  1. List one NFT for sale (Sell) on that marketplace. The Sell check passes because

0 (royalty) + 10000 (referral) = 10000 = HundredPercent. The order snapshots ReferralPercentage = 10000.

  1. Raise the royalty on the asset to 100% (AssetTrigger / UpdateRoyalties,

marketPercentage = 10000). Allowed: the per-field check passes and the live combined invariant is never re-evaluated against the open listing.

  1. Buy the listing (MarketBuy) from a second account (or settle the auction via Claim).

referralAmount = bid, royaltiesAmount = bid, marketOwnerAmount = −bid (skipped). Your referral + royalty addresses receive 2·bid; the buyer paid bid; bid KLV is minted.

Because the attacker controls buyer, seller, referral and royalty addresses, the only real cost is transaction fees; the cycle is repeatable until supply targets are met.

---

Evidence

Regression test (local, verbatim)

=== RUN   TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation
=== RUN   TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation/FixDisabled_MintsKLVFromThinAir
=== RUN   TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation/FixEnabled_RejectsInflation
--- PASS: TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation (0.00s)
    --- PASS: TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation/FixDisabled_MintsKLVFromThinAir (0.00s)
    --- PASS: TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation/FixEnabled_RejectsInflation (0.00s)
PASS
ok  	github.com/klever-io/klever-go/core/kapp/market	0.279s

FixDisabled asserts the attacker balance equals 2·bid = 51,200,000 KLV for a single settlement (bid = 25,600,000 KLV), with bid of that minted. FixEnabled asserts rejection and a 0 balance.

Mainnet exploitation (observed)

The bug was exploited in production, and was detected and characterised externally by the community monitoring project KleverPuls / kpulse.tech before the root cause was known internally. Over a ~24h window kpulse isolated a single wallet (opened 2026-06-04, ~204 transactions in ~24h, funded only by a ~242K KLV KuCoin withdrawal, no treasury/foundation funding) that:

  • self-issued 3 NFT collections named "InflationPOC" and **wash-traded one (NFLATION-ESGO/1)

29 times through self-created marketplaces - ~$450K of artificial, economically empty NFT volume**;

  • swapped the proceeds KLV → USDC / USDT / WBTC / WETH on KleverSwap and **bridged ~$72K of value

to Ethereum** via wrapped-asset burns over 24h (USDC −12,487 ≈ $12.5K; USDT −26,362 ≈ $26.4K; WBTC −0.31 ≈ $19.6K; WETH −7.55 ≈ $14K);

  • surfaced a spurious "1.86B KLV outflow" headline that kpulse correctly identified as a

wash-trade receipt-doubling artifact with small real net KLV flow.

That "doubling of marketplace receipts" is precisely the on-chain signature of this bug: each abusive settlement pays out a referral cut (bid) plus a royalty cut (bid) while the buyer paid only bid once - the market contract emits ~2× the value it took in, which *is* the mint. The attacker's self-issued collection and self-created marketplaces are exactly the self-dealing setup the regression test reproduces (the test reuses the real on-chain identifiers: collectionID = "NFLATION-ESGO", asset 1, market name "Inflation Market").

kpulse could not determine the cause from on-chain data alone and flagged the activity for confirmation; the Klever core team then traced it to the referral+royalty settlement defect described above and shipped the emergency guard + protocol fix.

Each abusive settlement minted one bid of KLV; the observed bid was 25,600,000 KLV, repeated and funnelled through a short hop chain before being swapped and bridged. The emergency guard (common/emergencyGuard.go) blocks the following observed sender public keys (hex):

Public key (hex)AddressRole (observed)
54ea28e527d4136508be955374afa54a8c25c19a48c674f412f7ce02db0f4e1bklv12n4z3ef86sfk2z97j4fhfta9f2xztsv6frr8faqj7l8q9kc0fcdsfjfqezroot / minter
bb687dbba23e1844fec674a32cb8809f0d3207506c53fc3d637e40dc56708d63klv1hd58mwaz8cvyflkxwj3jewyqnuxnyp6sd3flc0tr0eqdc4ns343skngdjqcollector hop (~125M KLV)
77388d3dfe6cd88e8da723254c11abf3d9cccb6fb77b000e5038fc3ff92b964dklv1wuug6007dnvgard8yvj5cydt70vuejm0kaasqrjs8r7rl7ftjexsglalf6direct recipient (25.6M, idle)
a196789b026f996867f08317cc6c5a4eb9ad3a59b1be3716420bc8692d4c3048klv15xt83xczd7vkselssvtucmz6f6u66wjekxlrw9jzp0yxjt2vxpyq2nawrwhop-2 recipient (25M)

The single-bid per-settlement size (25.6M KLV) matches the "direct recipient, 25.6M" entry, and the ~125M at the collector hop is consistent with roughly five abusive settlements.

---

Impact

  • Unbounded inflation of KLV (and of any sale currency used for the listing), repeatable for only

transaction fees, by any account that creates its own collection + marketplace.

  • The minted KLV is created by direct AddToBalance to attacker addresses (no tracked Mint), so

the asset's booked supply does not change - the inflation is off the books and only detectable by summing balances / auditing receipts (it surfaces on-chain as *doubled* marketplace receipts).

  • Realized impact (observed): the attacker minted KLV via ~29 self-dealt settlements, swapped to

stable/wrapped assets on KleverSwap, and off-ramped ~$72K to Ethereum via the bridge (USDC, USDT, WBTC, WETH) before the emergency guard halted the activity, alongside ~$450K of artificial NFT wash-trade volume.

  • Total loss of economic integrity for all KLV / token holders.

Who can exploit it / prerequisites

  • Any account that can pay the one-time collection-create + marketplace-create fees and tx

fees. No roles, admin, or allowlist.

  • Any client. The settlement is triggered by standard MarketBuy / Claim contracts POSTed to

the public, unauthenticated /transaction/send RPC (network/api/transaction/routes.go, SendTX / BroadcastTX). The operator CLI, the SDKs, or a hand-signed curl all work.

  • Deterministic; the abusive state is reached with one extra UpdateRoyalties after a normal listing.

---

Remediation

Shipped as a layered response (embargoed):

Layer 0 - emergency guard (deployed first, fork-proof) - GHSA-p7gw rc1

common/emergencyGuard.go + data/transaction/emergencyGuard.go: matching transactions are kept out of blocks this node proposes (core/process/block/preprocess/transactions.go) and refused at the node API (node.go SendTransaction / SendBulkTransactions). It never changes block validity, so a partial-fleet rollout cannot fork the chain. It blocks the known attacker senders (all contract types) plus all MarketBuy, Sell, and CreateMarketplace / ConfigMarketplace operations while the protocol fix rolls out. Enforcement is by proposer cooperation, not protocol - coverage equals the share of block producers running the guard.

Layer 1 - protocol fix (consensus, epoch-gated) - GHSA-p7gw rc2

core/kapp/market/market.go:593 rejects the settlement when marketOwnerAmount < 0, before any payout runs, returning Transaction_AmountInvalid. Gated behind the new FixMarketBuyOverflow activation-epoch flag (config/enableEpochs.*, core/fork/forks.go, core/interface.go) so historical blocks reprocess identically. Covered by TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation.

Recommended hardening (defense in depth)

  1. Snapshot the royalty % into MarketOrderData at Sell (as referral already is) and pay from

the snapshot, eliminating the TOCTOU entirely; or re-evaluate the combined referral% + royalty% <= 100% invariant at settlement.

  1. Treat a negative seller remainder as a hard error everywhere, and only treat exactly 0 as a

no-op skip (computeMarketOwnerAmount), so a future regression aborts the tx instead of minting.

  1. After splitting a payment pool, assert conservation (referral + royalties + ownerShare == bid)

so any drift aborts the transaction.

---

Notes

  • Triggered by both BuyItNow (Buy) and auction settlement (Claim).
  • The same family of "pay full cut, silently drop the negative remainder" minting also exists in the

royalty-split paths and is tracked separately under GHSA-cgc5-v3f2-8m2v (split-royalty uint32 overflow). This advisory covers the top-level referral+royalty > bid case; the FixMarketBuyOverflow guard here only checks marketOwnerAmount, not intra-split over-payments.

Acknowledgments

detected and characterised the exploitation in the wild**. kpulse isolated the attacker wallet and its "InflationPOC" collections, identified the marketplace wash-trading of NFLATION-ESGO/1 and the KleverSwap → bridge off-ramp (~$72K to Ethereum), and flagged the anomalous *doubling* of marketplace receipts - the exact on-chain signature of this bug - prompting the incident response that led to this fix. The root cause was then identified and remediated by the Klever core team.

Source

  • Vulnerable / fixed code: core/kapp/market/market.go:540-545,575-596,908,997-998,

core/kapp/kda/trigger.go:613-676, core/process/kda/assetHelper.go:101, tools/converters.go:102, core/constants.go:18.

  • Emergency guard: common/emergencyGuard.go, data/transaction/emergencyGuard.go,

core/process/block/preprocess/transactions.go, node/node.go.

  • Fork flag: config/enableEpochs.go, config/node/enableEpochs.yaml, core/fork/forks.go,

core/interface.go.

  • Regression test: core/kapp/market/market_test.go

(TestMarketKApp_ExecuteBuyMarket_RoyaltyReferralInflation).

Technical POC Analysis

The defect is an integer underflow / incorrect calculation (advisory cites CWE-191, with CWE-682 primary and CWE-367 TOCTOU).

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's marketplace contains a critical token-generation flaw allowing any authenticated user to create millions of unauthorized tokens through order settlement logic that bypasses fee caps when referral and royalty percentages exceed 100%. Publicly available exploit code exists and vendor advisories confirm active exploitation, placing all token holders at risk of immediate dilution and platform credibility damage.

Business Impact: Severe
Compensating Controls

Apply vendor patch: upgrade klever-go to v1.7.19 or later.

Threat Intelligence Overview

EPSS Score
0.3%
Top 78% exploitable
Prevalence
Low
single niche blockchain node, limited operator footprint
Threat Intel
1
1 source
Exploit
POC
Public exploit code exists
Data Quality
6 sources
Confidence: High
EUVD NVD CVE.org EPSS Vulnrichment GHSA Vendor 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 CRITICAL
CISA KEV No
Public POC Yes
EPSS 0.3%
Patch available Yes
Active threat No
Deciding rule
CRITICAL severity + public POC available
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
Out-of-Cycle
Exploitation
Poc
System Exposure· derived
Open
Automatable
No
Human Impact
Very High
Technical Impact
Partial

Priority Score

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

Attack Technique

A buffer overflow occurs when a program writes more data to a memory buffer than it was allocated to hold, causing the excess data to spill into adjacent memory regions.

Integer overflow occurs when an arithmetic operation produces a result that exceeds the maximum value a given integer type can store.

Vendor StatusVendor

SUSE

Severity: Critical

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