Skip to content

GHSA-9856-9gg9-qcmq CVE-2021-39137 GO-2022-0254

Ethereum Contains Consensus Flaw During Block Processing

Medium Go
Severity
6.5 / 10
Medium · CVSS 3.1
Exploit chance (EPSS)
1.32%
Chance of exploitation in the next 30 days. Higher than 70.97% of scored vulnerabilities.
Known exploited
No
Not in CISA's catalog
Weakness
CWE-436 Interpretation Conflict
Fix
1.10.8
Upgrade github.com/ethereum/go-ethereum to this version or later

Description

Impact

A vulnerability in the Geth EVM could cause a node to reject the canonical chain.

Description

A memory-corruption bug within the EVM can cause a consensus error, where vulnerable nodes obtain a different stateRoot when processing a maliciously crafted transaction. This, in turn, would lead to the chain being split in two forks.

All Geth versions supporting the London hard fork are vulnerable (which predates London), so all users should update.

This bug was exploited on Mainnet at block 13107518, leading to a minority chain split.

Patches

A patch is included in the v1.10.8 release. The exact patch to fix the issue is contained within this commit

Workarounds

No workarounds exist, save to update and/or apply the patch commit.

References.

Post-mortem write-up.

Credits

The bug was found by @guidovranken (working for Sentnl during an audit of the Telos EVM) and reported via bounty@ethereum.org.

For more information

If you have any questions or comments about this advisory:

Affected versions

Go

PackageVulnerableFixed in
github.com/ethereum/go-ethereum
>= 1.10.0, < 1.10.8
1.10.8
github.com/ethereum/go-ethereum
< 1.10.8
1.10.8

How to fix

Move to the fixed version or later with your package manager, update the lockfile, and run your tests. If the package only arrives through another dependency, upgrade that dependency first. If none of its releases pulls a fixed version yet, force the version with your package manager's override.

github.com/ethereum/go-ethereum Go → 1.10.8

go
go get github.com/ethereum/go-ethereum@v1.10.8 && go mod tidy

Severity breakdown

CVSS 3.1 6.5

CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:N/A:H

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

Weakness

CWE-436: Interpretation Conflict

Product A handles inputs or steps differently than Product B, which causes A to perform incorrect actions based on its perception of B's state.

References

Timeline

  1. Published
  2. Last updated by the source
  3. Latest EPSS score
AdvisorySeverityWhy it's related
GHSA-m6j8-rg6r-7mv8
Go Ethereum Improperly Validates the ECIES Public Key in RLPx Handshake
High Also affects github.com/ethereum/go-ethereum
GHSA-2gjw-fg97-vg3r
Go Ethereum affected by DoS via malicious p2p message
High Also affects github.com/ethereum/go-ethereum
GHSA-689v-6xwf-5jf3
Go Ethereum affected by DoS via malicious p2p message
High Also affects github.com/ethereum/go-ethereum
GHSA-mq3p-rrmp-79jg
go-ethereum is vulnerable to high CPU usage leading to DoS via malicious p2p message
High Also affects github.com/ethereum/go-ethereum
GHSA-mr7q-c9w9-wh4h
go-ethereum is vulnerable to DoS via malicious p2p message affecting a vulnerable node
High Also affects github.com/ethereum/go-ethereum
GHSA-q26p-9cq4-7fc2
Go Ethereum vulnerable to DoS via malicious p2p message
Medium Also affects github.com/ethereum/go-ethereum
GHSA-4xc9-8hmq-j652
go-ethereum vulnerable to DoS via malicious p2p message
High Also affects github.com/ethereum/go-ethereum
GHSA-v9jh-j8px-98vq
go-ethereum vulnerable to denial of service via crafted GraphQL query
High Also affects github.com/ethereum/go-ethereum
Is this in your code?

MergeHarbor checks every repository's dependencies against this database, ranks what matters by exploitability and reachability, routes it to the owning team and opens the fix pull request.

Check your repos with MergeHarbor