CVE-2024-32644: Evmos transaction execution not accounting for all state transition after interaction with precompiles
9.1
CVSS Score
3.1
Basic Information
CVE ID
GHSA ID
EPSS Score
0.73236%
CWE
Published
4/10/2024
Updated
4/19/2024
KEV Status
No
Technology
Go
Technical Details
CVSS Vector
CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H
Package Name | Ecosystem | Vulnerable Versions | First Patched Version |
---|---|---|---|
github.com/evmos/evmos/v16 | go | <= 16.0.4 | 17.0.0 |
github.com/evmos/evmos/v7 | go | <= 7.0.0 | |
github.com/evmos/evmos/v6 | go | <= 6.0.4 | |
github.com/evmos/evmos/v5 | go | <= 5.0.0 | |
github.com/tharsis/evmos | go | <= 1.1.3 | |
github.com/tharsis/evmos/v2 | go | <= 2.0.2 | |
github.com/tharsis/evmos/v3 | go | <= 3.0.3 | |
github.com/tharsis/evmos/v4 | go | <= 4.0.2 | |
github.com/tharsis/evmos/v5 | go | <= 5.0.1 |
Vulnerability Intelligence
Miggo AI
Root Cause Analysis
The core vulnerability exists in the state synchronization mechanism between originStorage
and dirtyStorage
. The Commit()
function's conditional persistence check (L460-465 in original code) only compared against initial originStorage
, not considering intermediate state changes during precompile()
execution. The stateObject
's storage handling allowed reverting changes after precompile()
interactions while maintaining the original originStorage
reference. The patch added transientStorage
to track committed changes within transaction context, confirming the original functions
' vulnerability.