Every CVE Search/ Get API key

CVE-2024-37153

Evmos's contract balance not updating correctly after interchain transaction

7.5 HighFix available

Evmos is the Ethereum Virtual Machine (EVM) Hub on the Cosmos Network. There is an issue with how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile. This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.The issue has been patched in versions >=V18.1.0.

Attack profile

How easy it is to exploit

Attack vector
Network
Complexity
Low
Privileges needed
None
User interaction
None

What an attacker can affect

Confidentiality
None
Integrity
High
Availability
None

Exploit likelihood

0.62%Up 0.6 points since Jun 7, 2024
90%50%10%1%

What each source reports

CVE List Score used 7.5

Evmos's contract balance not updating correctly after interchain transaction

Evmos is the Ethereum Virtual Machine (EVM) Hub on the Cosmos Network. There is an issue with how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile. This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.The issue has been patched in versions >=V18.1.0.

Record
CVE-2024-37153
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-670
Updated
2026-11-02
EUVDEUVD-2024-2214 7.5

Evmos is the Ethereum Virtual Machine (EVM) Hub on the Cosmos Network. There is an issue with how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile. This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.The issue has been patched in versions >=V18.1.0.

Record
EUVD-2024-2214
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Updated
2026-11-03
GitHub AdvisoriesGHSA-xgr7-jgq3-mhmc 7.5

Contract balance not updating correctly after interchain transaction

Summary

Short summary of the problem. Make the impact and severity as clear as possible. For example: An unsafe deserialization vulnerability allows any unauthenticated user to execute arbitrary code on the server.

Details

We discovered a bug walking through how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile

Proof of Concept

// This function does not reduce the contract balance correctly but liquid stakes correctly 
function transfer(
        string memory sourcePort,
        string memory sourceChannel,
        string memory denom,
        uint256 amount,
        string memory receiver,
        string memory evmosReceiver
    ) external returns (uint64 nextSequence) {
        counter += 1; # Only happens when there is a local state update together with an ICS20 Transfer
        Height memory timeoutHeight =  Height(100, 100);
        string memory memo = buildLiquidStakeMemo(receiver, evmosReceiver);
        return ICS20_CONTRACT.transfer(
            sourcePort, 
            sourceChannel,
            denom,
            amount,
            address(this), # this is the sender address which is the contract
            receiver,
            timeoutHeight,
            0,
            memo
        );
    }

Impact

This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.

Severity

Based on ImmuneFi Severity Classification System the severity was evaluated to Critical since the attack could have lead to create new supply of EVMOS and therefore lead to Direct loss of funds's value.

Patches

The issue has been patched in versions >=V18.1.0.

For more information

If you have any questions or comments about this advisory:

Reach out to the Core Team in Discord Open a discussion in evmos/evmos Email us at [email protected] for security questions

Record
GHSA-xgr7-jgq3-mhmc
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-670
Updated
2026-11-02
NVD 7.5

Evmos is the Ethereum Virtual Machine (EVM) Hub on the Cosmos Network. There is an issue with how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile. This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.The issue has been patched in versions >=V18.1.0.

Record
CVE-2024-37153
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-670
Updated
2026-11-02
OSV 7.5

Evmos's contract balance not updating correctly after interchain transaction

Evmos is the Ethereum Virtual Machine (EVM) Hub on the Cosmos Network. There is an issue with how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile. This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.The issue has been patched in versions >=V18.1.0.

Record
CVE-2024-37153
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-670
Updated
2026-11-02
OSVGHSA-xgr7-jgq3-mhmc 7.5

Contract balance not updating correctly after interchain transaction

Summary

Short summary of the problem. Make the impact and severity as clear as possible. For example: An unsafe deserialization vulnerability allows any unauthenticated user to execute arbitrary code on the server.

Details

We discovered a bug walking through how to liquid stake using Safe which itself is a contract. The bug only appears when there is a local state change together with an ICS20 transfer in the same function and uses the contract's balance, that is using the contract address as the sender parameter in an ICS20 transfer using the ICS20 precompile

Proof of Concept

// This function does not reduce the contract balance correctly but liquid stakes correctly 
function transfer(
        string memory sourcePort,
        string memory sourceChannel,
        string memory denom,
        uint256 amount,
        string memory receiver,
        string memory evmosReceiver
    ) external returns (uint64 nextSequence) {
        counter += 1; # Only happens when there is a local state update together with an ICS20 Transfer
        Height memory timeoutHeight =  Height(100, 100);
        string memory memo = buildLiquidStakeMemo(receiver, evmosReceiver);
        return ICS20_CONTRACT.transfer(
            sourcePort, 
            sourceChannel,
            denom,
            amount,
            address(this), # this is the sender address which is the contract
            receiver,
            timeoutHeight,
            0,
            memo
        );
    }

Impact

This is in essence the "infinite money glitch" allowing contracts to double the supply of Evmos after each transaction.

Severity

Based on ImmuneFi Severity Classification System the severity was evaluated to Critical since the attack could have lead to create new supply of EVMOS and therefore lead to Direct loss of funds's value.

Patches

The issue has been patched in versions >=V18.1.0.

For more information

If you have any questions or comments about this advisory:

Reach out to the Core Team in Discord Open a discussion in evmos/evmos Email us at [email protected] for security questions

Record
GHSA-xgr7-jgq3-mhmc
CVSS 3.1
7.5 HighCVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:N
Weakness
CWE-670
Updated
2026-11-02
OSVGO-2024-2903 No score

Contract balance not updating correctly after interchain transaction in github.com/evmos/evmos

Contract balance not updating correctly after interchain transaction in github.com/evmos/evmos

Record
GO-2024-2903
Updated
2026-11-02

Affected products

Affected packages

Affected packages
PackageAffectedFixed
github.com/evmos/evmos/v18
Go
through 18.0.0
18.1.0
github.com/evmos/evmos/v17
Go
through 17.0.1
18.1.0
github.com/evmos/evmos/v16
Go
through 16.0.4
18.1.0
github.com/evmos/evmos/v15
Go
through 15.0.0
18.1.0
github.com/evmos/evmos/v14
Go
through 14.1.0
18.1.0
github.com/evmos/evmos/v13
Go
through 13.0.2
18.1.0
github.com/evmos/evmos/v12
Go
through 12.1.6
18.1.0
github.com/evmos/evmos/v11
Go
through 11.0.2
18.1.0
github.com/evmos/evmos/v10
Go
through 10.0.1
18.1.0
github.com/evmos/evmos/v9
Go
through 9.1.0
18.1.0
Show 33 moreShow less
Affected packages
PackageAffectedFixed
github.com/evmos/evmos/v8
Go
through 8.2.3
18.1.0
github.com/evmos/evmos/v7
Go
through 7.0.0
18.1.0
github.com/evmos/evmos/v6
Go
through 6.0.4
18.1.0
github.com/evmos/evmos/v18
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v17
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v16
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v15
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v14
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v13
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v12
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v11
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v10
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v9
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v8
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v7
Go
before 18.1.0
18.1.0
github.com/evmos/evmos/v6
Go
before 18.1.0
18.1.0
github.com/evmos/evmos
Go
All versions None known
github.com/evmos/evmos/v2
Go
All versions None known
github.com/evmos/evmos/v3
Go
All versions None known
github.com/evmos/evmos/v4
Go
All versions None known
github.com/evmos/evmos/v5
Go
All versions None known
github.com/evmos/evmos/v6
Go
All versions None known
github.com/evmos/evmos/v7
Go
All versions None known
github.com/evmos/evmos/v8
Go
All versions None known
github.com/evmos/evmos/v9
Go
All versions None known
github.com/evmos/evmos/v10
Go
All versions None known
github.com/evmos/evmos/v11
Go
All versions None known
github.com/evmos/evmos/v12
Go
All versions None known
github.com/evmos/evmos/v13
Go
All versions None known
github.com/evmos/evmos/v14
Go
All versions None known
github.com/evmos/evmos/v15
Go
All versions None known
github.com/evmos/evmos/v16
Go
All versions None known
github.com/evmos/evmos/v17
Go
All versions None known

History

History
RecordedChangedSources
aliases, productsEUVD
first indexedCVE List, GitHub Advisories, NVD, OSV

Dates are when Every CVE recorded each change. Upstream dates may differ.

In short

CVE-2024-37153 is a high vulnerability (CVSS 7.5) in Evmos, published June 6, 2024. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 0.62%, the 49th percentile. Fixed in github.com/evmos/evmos/v18 18.1.0.

References

MoveEnter Open