{"id":"CVE-2024-32644","summary":"Evmos' transaction execution not accounting for all state transition after interaction with precompiles","details":"Evmos is a scalable, high-throughput Proof-of-Stake EVM blockchain that is fully compatible and interoperable with Ethereum. Prior to 17.0.0, there is a way to mint arbitrary tokens due to the possibility to have two different states not in sync during the execution of a transaction. The exploit is based on the fact that to sync the Cosmos SDK state and the EVM one, we rely on the `stateDB.Commit()` method. When we call this method, we iterate though all the `dirtyStorage` and, **if and only if** it is different than the `originStorage`, we set the new state. Setting the new state means we update the Cosmos SDK KVStore.  If a contract storage state that is the same before and after a transaction, but is changed during the transaction and can call an external contract after the change, it can be exploited to make the transaction similar to non-atomic. The vulnerability is **critical** since this could lead to drain of funds through creative SC interactions.  The issue has been patched in versions \u003e=V17.0.0.","aliases":["GHSA-3fp5-2xwh-fxm6","GO-2024-2715"],"modified":"2026-04-25T04:18:45.433749Z","published":"2024-04-19T14:53:44.423Z","database_specific":{"cna_assigner":"GitHub_M","unresolved_ranges":[{"source":"AFFECTED_FIELD","extracted_events":[{"fixed":"17.0.0"}]}],"osv_generated_from":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/32xxx/CVE-2024-32644.json","cwe_ids":["CWE-662"]},"references":[{"type":"WEB","url":"https://github.com/evmos/evmos/blob/b196a522ba4951890b40992e9f97aa610f8b5f9c/x/evm/statedb/statedb.go#L460-L465"},{"type":"ADVISORY","url":"https://github.com/CVEProject/cvelistV5/tree/main/cves/2024/32xxx/CVE-2024-32644.json"},{"type":"ADVISORY","url":"https://github.com/evmos/evmos/security/advisories/GHSA-3fp5-2xwh-fxm6"},{"type":"ADVISORY","url":"https://nvd.nist.gov/vuln/detail/CVE-2024-32644"},{"type":"FIX","url":"https://github.com/evmos/evmos/commit/08982b5ee726b97bc50eaf58d1914829648b6a5f"}],"affected":[{"ranges":[{"type":"GIT","repo":"https://github.com/evmos/evmos","events":[{"introduced":"0"},{"fixed":"c181c739a8caceaf9f58d5b0ce28a0b64edccd66"},{"fixed":"08982b5ee726b97bc50eaf58d1914829648b6a5f"}],"database_specific":{"versions":[{"introduced":"0"},{"fixed":"17.0.0"}]}}],"versions":["v16.0.0","v16.0.0-rc1","v16.0.0-rc2","v16.0.0-rc2.1","v16.0.0-rc4","v16.0.0-rc5","v16.0.1","v16.0.2","v16.0.3"],"database_specific":{"source":"https://storage.googleapis.com/osv-test-cve-osv-conversion/osv-output/CVE-2024-32644.json"}}],"schema_version":"1.7.5","severity":[{"type":"CVSS_V3","score":"CVSS:3.1/AV:N/AC:L/PR:N/UI:N/S:U/C:N/I:H/A:H"}]}