{"id":"CVE-2020-26241","aliases":["EUVD-2021-1275","GHSA-69v6-xc2j-r2jf","GO-2022-0771","openSUSE-SU-2025:15424-1"],"status":"published","title":"Shallow copy bug in geth","description":"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.","severity":{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium","assessor":"cna","from":"cve"},"epss":{"day":"2026-11-11","score":0.01226,"percentile":0.69218,"model":"v2026.06.15"},"facts":{"in_kev":false,"known_exploited":false,"public_exploit":false,"fix_available":true},"cwes":["CWE-682"],"published":"2020-11-25T01:25:20Z","modified":"2026-10-20T10:52:56Z","fixes":[{"ecosystem":"Go","package":"github.com/ethereum/go-ethereum","fixed_in":["1.9.17"],"sources":["ghsa","osv"]}],"affected":[{"source":"ghsa","ecosystem":"Go","package":"github.com/ethereum/go-ethereum","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"1.9.7"},{"fixed":"1.9.17"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/ethereum/go-ethereum","ranges":[{"type":"SEMVER","events":[{"introduced":"1.9.7"},{"fixed":"1.9.17"}]}]},{"source":"osv","ecosystem":"Go","package":"github.com/ethereum/go-ethereum","ranges":[{"type":"SEMVER","events":[{"introduced":"1.9.7"},{"fixed":"1.9.17"}]}]},{"source":"osv","ecosystem":"openSUSE:Tumbleweed","package":"govulncheck-vulndb","ranges":[{"type":"ECOSYSTEM","events":[{"introduced":"0"},{"fixed":"0.0.20250807T150727-1.1"}]}],"bundled":44}],"products":[{"vendor":"ethereum","product":"go-ethereum"},{"vendor":"ethereum","product":"go_ethereum"}],"references":[{"url":"https://blog.ethereum.org/2020/11/12/geth_security_release/","tags":["x_refsource_MISC","x_transferred","Vendor Advisory","advisory"]},{"url":"https://github.com/ethereum/go-ethereum/security/advisories/GHSA-69v6-xc2j-r2jf","tags":["x_refsource_CONFIRM","x_transferred","Third Party Advisory","advisory","web"]},{"url":"https://nvd.nist.gov/vuln/detail/CVE-2020-26241","tags":["advisory"]},{"url":"https://github.com/ethereum/go-ethereum/commit/295693759e5ded05fec0b2fb39359965b60da785","tags":["web","fix"]},{"url":"https://blog.ethereum.org/2020/11/12/geth_security_release","tags":["web"]},{"url":"https://github.com/advisories/GHSA-69v6-xc2j-r2jf"},{"url":"https://github.com/ethereum/go-ethereum","tags":["package"]},{"url":"","tags":["advisory"]},{"url":"https://www.suse.com/security/cve/CVE-2015-7561","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2016-9962","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2017-1000056","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2017-1002102","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2018-1002100","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2018-1002101","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2018-16733","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2018-19184","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-1002100","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-1002101","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-11245","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-11251","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2019-11253","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26240","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-26241","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8551","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8555","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8557","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8558","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8562","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8563","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2020-8566","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-25735","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-25736","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-25737","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-25741","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-25743","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2021-30465","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-29162","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-29177","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-3162","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2022-3294","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-2431","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-25809","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-2727","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-2728","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-27561","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-28642","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2023-5528","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-45310","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2024-5321","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-3445","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-47907","tags":["web"]},{"url":"https://www.suse.com/security/cve/CVE-2025-47908","tags":["web"]}],"sources":{"cve":[{"id":"CVE-2020-26241","title":"Shallow copy bug in geth","description":"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.","status":"published","published":"2020-11-25T01:25:20Z","modified":"2024-08-04T15:56:03.871Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium","assessor":"cna"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T14:35:46.129376Z"}],"euvd":[{"id":"EUVD-2021-1275","description":"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.","status":"published","published":"2020-11-25T01:25:20Z","modified":"2024-08-04T15:56:03Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"updated_at":"2026-11-03T03:07:15.778249Z"}],"ghsa":[{"id":"GHSA-69v6-xc2j-r2jf","title":"Shallow copy bug in geth","description":"### Impact\nThis is a Consensus vulnerability, which can be used to cause a chain-split where vulnerable nodes reject the canonical chain. \n\nGeth’s pre-compiled `dataCopy` (at `0x00...04`) contract did a shallow copy on invocation. An attacker could deploy a contract that \n\n- writes `X` to an EVM memory region `R`,\n- calls `0x00..04` with `R` as an argument,\n- overwrites `R` to `Y`,\n- and finally invokes the `RETURNDATACOPY` opcode.\n\nWhen this contract is invoked, a consensus-compliant node would push `X` on the EVM stack, whereas Geth would push `Y`.\n\n\n### Patches\n\nNo standalone patches have been made. \n\n### Workarounds\n\nUpgrade to `1.9.17` or higher.\n\n### References\n\nhttps://blog.ethereum.org/2020/11/12/geth_security_release/\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in [go-ethereum](https://github.com/ethereum/go-ethereum)\n* Email us at [security@ethereum.org](mailto:security@ethereum.org)\n","status":"published","published":"2021-06-29T21:13:01Z","modified":"2025-01-30T14:37:52Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T14:38:28.945236Z"}],"nvd":[{"id":"CVE-2020-26241","description":"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.","status":"published","published":"2020-11-25T02:15:11.047Z","modified":"2026-06-17T03:07:54.053Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium","assessor":"secondary"},{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"high","assessor":"primary"},{"version":"2.0","score":5.5,"vector":"AV:N/AC:L/Au:S/C:N/I:P/A:P","level":"medium","assessor":"primary"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T14:06:25.394006Z"}],"osv":[{"id":"CVE-2020-26241","description":"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.","status":"published","published":"2020-11-25T02:15:11.047Z","modified":"2026-10-20T10:52:56.322092435Z","cvss":[{"version":"3.1","score":7.1,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:L","level":"high"}],"updated_at":"2026-11-02T15:44:15.879068Z"},{"id":"GHSA-69v6-xc2j-r2jf","title":"Shallow copy bug in geth","description":"### Impact\nThis is a Consensus vulnerability, which can be used to cause a chain-split where vulnerable nodes reject the canonical chain. \n\nGeth’s pre-compiled `dataCopy` (at `0x00...04`) contract did a shallow copy on invocation. An attacker could deploy a contract that \n\n- writes `X` to an EVM memory region `R`,\n- calls `0x00..04` with `R` as an argument,\n- overwrites `R` to `Y`,\n- and finally invokes the `RETURNDATACOPY` opcode.\n\nWhen this contract is invoked, a consensus-compliant node would push `X` on the EVM stack, whereas Geth would push `Y`.\n\n\n### Patches\n\nNo standalone patches have been made. \n\n### Workarounds\n\nUpgrade to `1.9.17` or higher.\n\n### References\n\nhttps://blog.ethereum.org/2020/11/12/geth_security_release/\n\n### For more information\nIf you have any questions or comments about this advisory:\n* Open an issue in [go-ethereum](https://github.com/ethereum/go-ethereum)\n* Email us at [security@ethereum.org](mailto:security@ethereum.org)\n","status":"published","published":"2021-06-29T21:13:01Z","modified":"2026-07-08T06:00:35.934223631Z","cvss":[{"version":"3.1","score":6.5,"vector":"CVSS:3.1/AV:N/AC:L/PR:L/UI:N/S:U/C:N/I:H/A:N","level":"medium"}],"cwes":["CWE-682"],"updated_at":"2026-11-02T15:46:39.618611Z"},{"id":"GO-2022-0771","title":"Shallow copy bug in geth in github.com/ethereum/go-ethereum","description":"Shallow copy bug in geth in github.com/ethereum/go-ethereum","status":"published","published":"2024-08-21T15:28:59Z","modified":"2026-03-03T04:50:50.860337Z","updated_at":"2026-11-02T15:47:00.918515Z"},{"id":"openSUSE-SU-2025:15424-1","title":"govulncheck-vulndb-0.0.20250807T150727-1.1 on GA media","description":"These are all security issues fixed in the govulncheck-vulndb-0.0.20250807T150727-1.1 package on the GA media of openSUSE Tumbleweed.","status":"published","published":"2025-08-08T00:00:00Z","modified":"2026-03-23T04:53:45.821911Z","updated_at":"2026-11-02T16:58:37.810934Z"}]}}
