Skip to main content
← All vulnerabilities
CVE-2022-35936GO-2022-0760GHSA-F92V-GRC2-W2FG

Ethermint DoS through Unintended Contract Selfdestruct

Published
Last modified
published
Not listed in CISA KEV
Fix
Fixed in 0.7.1-rc2, 0.18.0, 7.0.0
None on Exploit-DB, Metasploit or GitHub
  • Exploitation: poc
  • Automatable: yes
  • Technical impact: partial

Summary

Ethermint is an Ethereum library. In Ethermint running versions before `v0.17.2`, the contract `selfdestruct` invocation permanently removes the corresponding bytecode from the internal database storage. However, due to a bug in the `DeleteAccount`function, all contracts that used the identical bytecode (i.e shared the same `CodeHash`) will also stop working once one contract invokes `selfdestruct`, even though the other contracts did not invoke the `selfdestruct` OPCODE. This vulnerability has been patched in Ethermint version v0.18.0. The patch has state machine-breaking changes for applications using Ethermint, so a coordinated upgrade procedure is required. A workaround is available. If a contract is subject to DoS due to this issue, the user can redeploy the same contract, i.e. with identical bytecode, so that the original contract's code is recovered. The new contract deployment restores the `bytecode hash -> bytecode` entry in the internal state.

Timeline

  1. CVE published
  2. CISA SSVC assessment

    Exploitation: poc · Automatable: yes · Technical impact: partial

  3. Record last updated

Affected versions

  • evmos ethermint

    through 0.17.2

  • github.com/crypto-org-chain/cronosGo

    fixed in 0.7.1-rc2

  • github.com/evmos/ethermintGo

    fixed in 0.18.0

  • github.com/evmos/evmosGo

    All versions

  • github.com/evmos/evmos/v2Go

    All versions

  • github.com/evmos/evmos/v3Go

    All versions

  • github.com/evmos/evmos/v4Go

    All versions

  • github.com/evmos/evmos/v5Go

    All versions

  • github.com/evmos/evmos/v6Go

    All versions

  • github.com/evmos/evmos/v7Go

    fixed in 7.0.0

  • github.com/kava-labs/kavaGo

    fixed in 0.18.0

  • github.com/evmos/evmosGo

    fixed in 7.0.0

  • github.com/Kava-Labs/kavaGo

    fixed in 0.18.0

References 3

GitHub · evmos/ethermint