CVE-2020-26241: Shallow copy bug in geth

Published Nov 25, 2020
·
Updated

Impact This is a Consensus vulnerability, which can be used to cause a chain-split where vulnerable nodes reject the canonical chain.

Geth’s pre-compiled dataCopy (at 0x00...04) contract did a shallow copy on invocation. An attacker could deploy a contract that

- writes X to an EVM memory region R, - calls 0x00..04 with R as an argument, - overwrites R to Y, - and finally invokes the RETURNDATACOPY opcode.

When this contract is invoked, a consensus-compliant node would push X on the EVM stack, whereas Geth would push Y.

Patches

No standalone patches have been made.

Workarounds

Upgrade to 1.9.17 or higher.

References

https://blog.ethereum.org/2020/11/12/gethsecurityrelease/

For more information If you have any questions or comments about this advisory: Open an issue in go-ethereum Email us at security@ethereum.org

Other sources

Go Ethereum, or "Geth", is the official Golang implementation of the Ethereum protocol. This is a Consensus vulnerability in Geth before version 1.9.17 which can be used to cause a chain-split where vulnerable nodes reject the canonical chain. Geth's pre-compiled dataCopy (at 0x00...04) contract did a shallow copy on invocation. An attacker could deploy a contract that writes X to an EVM memory region R, then calls 0x00..04 with R as an argument, then overwrites R to Y, and finally invokes the RETURNDATACOPY opcode. When this contract is invoked, a consensus-compliant node would push X on the EVM stack, whereas Geth would push Y. This is fixed in version 1.9.17.

MITRE

Affected Software

2 affected componentsFixes available
go/github.com/ethereum/go-ethereum>=1.9.7<1.9.17
1.9.17
Ethereum Go Ethereum<1.9.17

Event History

Nov 25, 2020
CVE Published
via MITRE·01:25 AM
Data Sourced
via MITRE·01:25 AM
DescriptionSeverityWeakness
Data Sourced
via NVD·02:15 AM
DescriptionSeverityWeaknessAffected Software
Jun 29, 2021
Advisory Published
09:13 PM
Data Sourced
via GitHub·09:13 PM
DescriptionSeverityWeaknessAffected Software

Frequently Asked Questions

1

What is CVE-2020-26241?

CVE-2020-26241 is a consensus vulnerability in Go Ethereum (Geth) that can cause a chain-split and make vulnerable nodes reject the canonical chain.

2

What is the impact of CVE-2020-26241?

The impact of CVE-2020-26241 is a chain-split where vulnerable nodes reject the canonical chain.

3

How can CVE-2020-26241 be exploited?

An attacker can exploit CVE-2020-26241 by deploying a contract that writes 'X' to an EVM memory location, causing Geth to perform a shallow copy on invocation and potentially causing a chain-split.

4

What is the affected software for CVE-2020-26241?

The affected software for CVE-2020-26241 is Go Ethereum (Geth) versions 1.9.7 to 1.9.17.

5

How can I fix CVE-2020-26241?

To fix CVE-2020-26241, update to Geth version 1.9.17 or higher.

Contact

SecAlerts Pty Ltd.
132 Wickham Terrace
Fortitude Valley,
QLD 4006, Australia
info@secalerts.co
By using SecAlerts services, you agree to our services end-user license agreement. This website is safeguarded by reCAPTCHA and governed by the Google Privacy Policy and Terms of Service. All names, logos, and brands of products are owned by their respective owners, and any usage of these names, logos, and brands for identification purposes only does not imply endorsement. If you possess any content that requires removal, please get in touch with us.
© 2026 SecAlerts Pty Ltd.
ABN: 70 645 966 203, ACN: 645 966 203