Executive brief
Klever-Go is a blockchain virtual machine framework. A critical authorization flaw in the UpdateAccountPermission built-in function allows an attacker to completely take over any account with configured permissions by deploying a malicious smart contract. After takeover, the attacker gains full control of the victim's assets and operations without requiring any of the victim's cryptographic keys.
Technical details
The vulnerability is an authorization bypass in the KleverUpdateAccountPermission handler (kleverUpdateAccountPermission.go). The flaw occurs because the authorization check uses vmInput.RecipientAddr (attacker-controlled) instead of vmInput.CallerAddr (authenticated). When a contract calls the built-in via ExecuteOnDestContext, RecipientAddr can be set to any target account; the handler then verifies whether RecipientAddr is an authorized signer on the *target* account's permission set. Since every account with configured permissions lists itself as an Owner signer by default, this check always passes when RecipientAddr equals the target. An attacker can invoke this by deploying a contract that calls UpdateAccountPermission with the victim's account address as RecipientAddr and attacker-supplied signers as the new permission set. No signature or key from the victim is required. The native transaction path (txProcess.go) is safe as it uses tx.GetSender(). A proof-of-concept confirms full permission rewrite affecting every multisig or advanced-permission account.
Affected products
- Klever Klever-Go <unknown
Timeline
- 2026-09-23: disclosed: GHSA-97cv-x867-6xhm published
- 2026: other: CVE-2026-82405 assigned