Description
Klever-Go is the Go implementation of the Klever blockchain protocol. Prior to 1.7.17, KVM exposes `ExecuteReadOnlyWithTypedArguments` as a read-only execution mechanism. The hook saves the previous read-only state, sets `runtime.SetReadOnly(true)`, executes the destination context, and then restores the previous read-only state. However, the indirect contract delete and upgrade paths do not reject execution when `runtime.ReadOnly()` is true. As a result, a contract reached through read-only execution can call the production delete hook for a target contract it owns. The delete path appends the target address to `vmOutput.DeletedAccounts`, the output context merges `DeletedAccounts` into the caller output, and the smart contract processor later processes the VM output by deleting accounts listed in that field. The root cause is that read-only mode is applied as runtime state, but not enforced by the state-changing delete and upgrade host-core paths. This breaks the expected isolation boundary for workflows that rely on read-only calls to inspect another contract without allowing that callee to produce state-changing VM output. The issue is fixed in v1.7.17. Contract delete and upgrade host-core paths now reject execution when `runtime.ReadOnly()` is true. The invariant is regression-tested for delete, upgrade, storage writes, value transfers, and any VM output field that can later mutate chain state.
Published: 2026-07-21
Score: 6.3 Medium
EPSS: < 1% Very Low
KEV: No
Impact: n/a
Action: n/a
AI Analysis

Impact

Prior to version 1.7.17, Klever‑Go exposed a read‑only execution API that temporarily sets a runtime flag. The delete and upgrade pathways within the contract framework do not reject operations when this flag is set, which means a contract invoked under read‑only execution can call the delete or upgrade functions of a contract it owns. The delete operation records the target address in a list that is later processed to delete accounts, effectively erasing the contract. Because the runtime flag is not enforced by the host‑core delete and upgrade logic, this flaw breaks the expected isolation between read‑only contract calls and state‑changing side effects. The vulnerability is a CWE‑693 data‑integrity issue that can be used to silently delete or replace contracts.

Affected Systems

All releases prior to version 1.7.17 of the Klever‑Go implementation distributed by klever‑io are affected. A contract reached via read‑only execution can trigger the production delete hook for a target that it owns, leading to unintentionally deleted contracts. The issue was fixed in release 1.7.17 when delete and upgrade paths now reject execution when the runtime is marked read‑only.

Risk and Exploitability

The CVSS score of 6.3 denotes a moderate severity, yet the EPSS score is below 1 percent which indicates a low exploitation probability at present, and the vulnerability is not listed in CISA's KEV catalog. Based on the description, the likely attack vector is a malicious or compromised smart contract that initiates read‑only calls targeting delete or upgrade functions, making it primarily an insider or supply‑chain risk. If exploited, an attacker could erase legitimate contracts or replace them with malicious code, resulting in loss of functionality and potential financial loss for users interacting with those contracts.

Generated by OpenCVE AI on July 30, 2026 at 16:37 UTC.

Remediation

No vendor fix or workaround currently provided.

OpenCVE Recommended Actions

  • Upgrade Klever‑Go to version 1.7.17 or later, where the delete and upgrade paths check the read‑only flag before execution.
  • Audit all deployed smart contracts for delete or upgrade invocations that could be triggered via read‑only execution and refactor or remove those calls.
  • Set up automated monitoring of transaction logs to detect unexpected "DeletedAccounts" entries or upgrade events originating from read‑only operations, and configure alerts for anomalous activity.

Generated by OpenCVE AI on July 30, 2026 at 16:37 UTC.

Tracking

Sign in to view the affected projects.

Advisories
Source ID Title
Github GHSA Github GHSA GHSA-jc6w-wmfc-fh33 Klever-Go KVM read-only execution can commit contract delete and upgrade side effects
History

Thu, 23 Jul 2026 05:45:00 +0000

Type Values Removed Values Added
First Time appeared Klever-io
Klever-io klever-go
Vendors & Products Klever-io
Klever-io klever-go

Wed, 22 Jul 2026 15:30:00 +0000

Type Values Removed Values Added
Metrics ssvc

{'options': {'Automatable': 'no', 'Exploitation': 'poc', 'Technical Impact': 'partial'}, 'version': '2.0.3'}


Tue, 21 Jul 2026 20:15:00 +0000

Type Values Removed Values Added
Description Klever-Go is the Go implementation of the Klever blockchain protocol. Prior to 1.7.17, KVM exposes `ExecuteReadOnlyWithTypedArguments` as a read-only execution mechanism. The hook saves the previous read-only state, sets `runtime.SetReadOnly(true)`, executes the destination context, and then restores the previous read-only state. However, the indirect contract delete and upgrade paths do not reject execution when `runtime.ReadOnly()` is true. As a result, a contract reached through read-only execution can call the production delete hook for a target contract it owns. The delete path appends the target address to `vmOutput.DeletedAccounts`, the output context merges `DeletedAccounts` into the caller output, and the smart contract processor later processes the VM output by deleting accounts listed in that field. The root cause is that read-only mode is applied as runtime state, but not enforced by the state-changing delete and upgrade host-core paths. This breaks the expected isolation boundary for workflows that rely on read-only calls to inspect another contract without allowing that callee to produce state-changing VM output. The issue is fixed in v1.7.17. Contract delete and upgrade host-core paths now reject execution when `runtime.ReadOnly()` is true. The invariant is regression-tested for delete, upgrade, storage writes, value transfers, and any VM output field that can later mutate chain state.
Title Klever-Go KVM read-only execution can commit contract delete and upgrade side effects
Weaknesses CWE-693
References
Metrics cvssV3_1

{'score': 6.3, 'vector': 'CVSS:3.1/AV:N/AC:H/PR:L/UI:N/S:C/C:N/I:H/A:N'}


Subscriptions

Klever-io Klever-go
cve-icon MITRE

Status: PUBLISHED

Assigner: GitHub_M

Published:

Updated: 2026-07-22T14:28:22.326Z

Reserved: 2026-05-13T21:04:10.932Z

Link: CVE-2026-46403

cve-icon Vulnrichment

Updated: 2026-07-22T14:27:46.153Z

cve-icon NVD

No data.

cve-icon Redhat

No data.

cve-icon OpenCVE Enrichment

Updated: 2026-07-30T16:45:04Z

Weaknesses
  • CWE-693

    Protection Mechanism Failure