CVE-2020-26241
Shallow copy bug in geth
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.
Attack profile
How easy it is to exploit
- Attack vector
- Network
- Complexity
- Low
- Privileges needed
- Low
- User interaction
- None
What an attacker can affect
- Confidentiality
- None
- Integrity
- High
- Availability
- None
Exploit likelihood
What each source reports
CVE List Score used
6.5
Shallow copy bug in geth
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.
- Record
CVE-2020-26241- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-682
- Updated
- 2026-11-02
EUVDEUVD-2021-1275
6.5
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.
- Record
EUVD-2021-1275- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Updated
- 2026-11-03
GitHub AdvisoriesGHSA-69v6-xc2j-r2jf
6.5
Shallow copy bug in geth
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
Xto an EVM memory regionR, - calls
0x00..04withRas an argument, - overwrites
RtoY, - and finally invokes the
RETURNDATACOPYopcode.
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/geth_security_release/
For more information
If you have any questions or comments about this advisory:
- Open an issue in go-ethereum
- Email us at [email protected]
- Record
GHSA-69v6-xc2j-r2jf- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-682
- Updated
- 2026-11-02
NVD
6.5
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.
- Record
CVE-2020-26241- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L - CVSS 2.0
- 5.5 Medium
AV:N/AC:L/Au:S/C:N/I:P/A:P - Weakness
- CWE-682
- Updated
- 2026-11-02
OSV
7.1
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.
- Record
CVE-2020-26241- CVSS 3.1
- 7.1 High
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L - Updated
- 2026-11-02
OSVGHSA-69v6-xc2j-r2jf
6.5
Shallow copy bug in geth
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
Xto an EVM memory regionR, - calls
0x00..04withRas an argument, - overwrites
RtoY, - and finally invokes the
RETURNDATACOPYopcode.
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/geth_security_release/
For more information
If you have any questions or comments about this advisory:
- Open an issue in go-ethereum
- Email us at [email protected]
- Record
GHSA-69v6-xc2j-r2jf- CVSS 3.1
- 6.5 Medium
CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N - Weakness
- CWE-682
- Updated
- 2026-11-02
OSVGO-2022-0771 No score
Shallow copy bug in geth in github.com/ethereum/go-ethereum
Shallow copy bug in geth in github.com/ethereum/go-ethereum
- Record
GO-2022-0771- Updated
- 2026-11-02
OSVopenSUSE-SU-2025:15424-1 No score
govulncheck-vulndb-0.0.20250807T150727-1.1 on GA media
These are all security issues fixed in the govulncheck-vulndb-0.0.20250807T150727-1.1 package on the GA media of openSUSE Tumbleweed.
- Record
openSUSE-SU-2025:15424-1- Updated
- 2026-11-02
Affected products
Affected packages
| Package | Affected | Fixed |
|---|---|---|
github.com/ethereum/go-ethereumGo |
1.9.7 up to 1.9.17 | 1.9.17 |
govulncheck-vulndbopenSUSE:Tumbleweed From an advisory covering 44 CVEs |
before 0.0.20250807T150727-1.1 | 0.0.20250807T150727-1.1 |
History
| Recorded | Changed | Sources |
|---|---|---|
| affected, facts | ||
| aliases | EUVD | |
| first indexed | CVE List, GitHub Advisories, NVD, OSV |
Dates are when Every CVE recorded each change. Upstream dates may differ.
In short
CVE-2020-26241 is a medium vulnerability (CVSS 6.5) in Ethereum Go Ethereum, published November 25, 2020. No source lists public exploit code. EPSS puts the chance of exploitation in the next 30 days at 1.23%, the 69th percentile. Fixed in github.com/ethereum/go-ethereum 1.9.17.
References
blog.ethereum.org/2020/11/12/geth_security_release
github.com/ethereum/go-ethereum/security/advisories/GHSA-69v6-xc2j-r2jf
nvd.nist.gov/vuln/detail/CVE-2020-26241
github.com/ethereum/go-ethereum/commit/295693759e5ded05fec0b2fb39359965b60da785
github.com/advisories/GHSA-69v6-xc2j-r2jf
github.com/ethereum/go-ethereum
Show 44 moreShow less
suse.com/security/cve/CVE-2015-7561
suse.com/security/cve/CVE-2016-9962
suse.com/security/cve/CVE-2017-1000056
suse.com/security/cve/CVE-2017-1002102
suse.com/security/cve/CVE-2018-1002100
suse.com/security/cve/CVE-2018-1002101
suse.com/security/cve/CVE-2018-16733
suse.com/security/cve/CVE-2018-19184
suse.com/security/cve/CVE-2019-1002100
suse.com/security/cve/CVE-2019-1002101
suse.com/security/cve/CVE-2019-11245
suse.com/security/cve/CVE-2019-11251
suse.com/security/cve/CVE-2019-11253
suse.com/security/cve/CVE-2020-26240
suse.com/security/cve/CVE-2020-26241
suse.com/security/cve/CVE-2020-8551
suse.com/security/cve/CVE-2020-8555
suse.com/security/cve/CVE-2020-8557
suse.com/security/cve/CVE-2020-8558
suse.com/security/cve/CVE-2020-8562
suse.com/security/cve/CVE-2020-8563
suse.com/security/cve/CVE-2020-8566
suse.com/security/cve/CVE-2021-25735
suse.com/security/cve/CVE-2021-25736
suse.com/security/cve/CVE-2021-25737
suse.com/security/cve/CVE-2021-25741
suse.com/security/cve/CVE-2021-25743
suse.com/security/cve/CVE-2021-30465
suse.com/security/cve/CVE-2022-29162
suse.com/security/cve/CVE-2022-29177
suse.com/security/cve/CVE-2022-3162
suse.com/security/cve/CVE-2022-3294
suse.com/security/cve/CVE-2023-2431
suse.com/security/cve/CVE-2023-25809
suse.com/security/cve/CVE-2023-2727
suse.com/security/cve/CVE-2023-2728
suse.com/security/cve/CVE-2023-27561
suse.com/security/cve/CVE-2023-28642
suse.com/security/cve/CVE-2023-5528
suse.com/security/cve/CVE-2024-45310
suse.com/security/cve/CVE-2024-5321
suse.com/security/cve/CVE-2025-3445
suse.com/security/cve/CVE-2025-47907
suse.com/security/cve/CVE-2025-47908