Zusammenfassung
Versionen von Geth gebaut mit Go <1.15.5 oder <1.14.12 sind höchstwahrscheinlich von einer kritischen DOS-bezogenen Sicherheitsanfälligkeit betroffen. Das Golang-Team hat diesen Fehler als “CVE-2020-28362” registriert.
Wir empfehlen allen Benutzern, wieder aufzubauen (idealerweise V1.9.24) mit Go 1.15.5 oder 1.14.12um Knoten zu vermeiden. Wenn Sie über einen unserer offiziellen Kanäle verteilt werden, werden wir alternativ veröffentlichen, wenn Sie Binärdateien ausführen V1.9.24 wir selbst gebaut mit Go 1.15.5.
Docker -Bilder sind aufgrund eines fehlenden Basisbildes höchstwahrscheinlich veraltet, aber Sie können die Versionshinweise zum vorübergehenden Erstellen eines mit Go überprüfen 1.15.5. Bitte rennen Sie Geth -Version Um die GO -Version zu überprüfen, mit der Ihr Binärer gebaut wurde.
Hintergrund
Anfang Oktober hat sich Go-Ehereum in Google eingeschrieben Oss-Fuzz Programm. Wir hatten Vorhersage auf Ad-hoc-Basis von Fuzzern ausgeführt und einige verschiedene Plattformen getestet.
Am 2020-10-24 wurde uns mitgeteilt, dass einer unserer Fuzzer einen Absturz gefunden hatte.
Bei der Untersuchung stellte sich heraus, dass die Grundursache des Problems ein Fehler in den Standardbibliotheken von Go war und das Problem stromaufwärts gemeldet wurde.
Besonderer Dank an Adam Korczynski der ADA-Logik für die erste Integration von Go-Ehereum in Oss-Fuzz!
Auswirkungen
Das DOS -Problem kann verwendet werden, um alle Geth -Knoten während der Blockverarbeitung zu stürzen.
Außerhalb des Go-Ethersum ist das Problem für alle Gabhs von Geth (wie Turbogeth oder etcs Core-Geth) höchstwahrscheinlich relevant. Für einen noch umfassenderen Kontext beziehen wir uns auf Upstream, da das Go-Team eine Untersuchung potenziell betroffener Parteien durchgeführt hat.
Zeitleiste
- 2020-10-24: Absturzbericht von Oss-Fuzz
- 2020-10-25: Die Untersuchung ergab, dass es auf Fehler in Go zurückzuführen war. Details gesendet an security@golang.org
- 2020-10-26: Bestätigung von Upstream, Untersuchung laufend
- 2020-10-26-2020-11-06: Erörterte potenzielle Korrekturen, Upstream-Untersuchung potenziell betroffener Parteien
- 2020-11-06: vorgeschrieben vorgeschriebene Fix-Freisetzung für 2020-11-12
- 2020-11-09: Upstream hat die Sicherheitsveröffentlichung angekündigt: https://groups.google.com/g/golang-announce/c/kma3eup0qhu/m/o5rsmho_caaj
- 2020-11-11: Benutzer über die bevorstehende Veröffentlichung über den offiziellen Geth Twitter informiert Kontounser offizieller Discord-Kanal und Reddit.
- 2020-11-12: Neue GO-Version wurden veröffentlicht und neu Geth Binärdateien wurden veröffentlicht
Zusätzliche Probleme
Bergbaufehler
Ein weiteres Sicherheitsproblem wurde über uns aufmerksam über uns aufmerksam Diese PRmit einem Fix für den Ethash -Algorithmus.
Der Bergbaufehler könnte dazu führen, dass Bergleute in einer bevorstehenden Epoche fälschlicherweise die POW berechnen. Dies geschah in der ETC-Kette am 2020-11-06. Es scheint, dass dies ein Problem für das ETH -Hauptnetz um Block wäre 11550000 / Epoche 385die Anfang Januar 2021 stattfinden wird.
Dieses Problem ist ebenfalls als von behoben 1.9.24. Dieses Problem ist nur für Bergleute relevant. Nicht-Mining-Knoten sind nicht betroffen.
Geth Shallow Copy -Fehler
Betroffen: 1.9.7 – – 1.9.16
Fest: 1.9.17
Typ: Konsensanfälligkeit
Am 2020-07-15 meldete John Youngseok Yang (Softwareplattform Lab) eine Konsensanfälligkeit in Geth.
Geths Vorkompilierter Datacopy (0x00 … 04) Der Vertrag führte eine flache Kopie für den Aufruf durch, während Parity eine tiefe Kopie durchführte. Ein Angreifer könnte einen Vertrag einsetzen, den
- schreibt X zu einer EVM -Speicherregion RAnwesend
- Anrufe 0x00..04 mit R als Argument,
- überschreibt R Zu YAnwesend
- und ruft schließlich die an Returndatacopy Opcode.
- Wenn dieser Vertrag aufgerufen wird, würde Parität drängen X Auf dem EVM -Stapel, während Geth drücken würde Y.
Konsequenzen
Dies wurde auf Ethereum Mainnet im Block ausgenutzt 11234873Transaktion 0x57f7f9. Knoten
Weitere Kontext finden Sie in Der Geth Post-Mortem Und Infuro nach dem Tod Und Hier.
Dos in .16 Und .17
Betroffen: V1.9.16AnwesendV1.9.17
Fest: V1.9.18
Typ: DOS -Verwundbarkeit während der Blockverarbeitung
Es wurde eine DOS -Verwundbarkeit gefunden und befestigt V1.9.18. Wir haben uns entschieden, die Details zu diesem Zeitpunkt nicht zu veröffentlichen.
Empfehlungen
Kurzfristig empfehlen wir, dass alle Benutzer ein Upgrade auf ein Upgrade Geth Version V1.9.24 (die mit Go gebaut werden sollte 1.15.5) sofort. Offizielle Veröffentlichungen können gefunden werden Hier.
Wenn Sie Geth über Docker verwenden, kann es einige Probleme geben. Wenn Sie verwenden Ethereum/Kunden-GoEs gibt zwei Dinge, die Sie wissen müssen:
- Es kann eine Verzögerung geben, bevor das neue Bild auf Docker Hub erscheint.
- Es sei denn, die GO -Basisbilder wurden schnell genug erstellt, es besteht die Möglichkeit, dass sie mit einem gebaut werden verletzlich Version von Go.
Wenn Sie Docker -Bilder selbst bauen (via Docker Build. Aus der Repository -Stamme) kann das zweite Problem auch Probleme für Sie verursachen.
Achten Sie also darauf, dass dies gehen 1.15.5 wird als Basisbild verwendet.
Langfristig empfehlen wir, dass Benutzer und Bergleute auch alternative Kunden prüfen. Es ist unser starkes Gefühl, dass die Widerstandsfähigkeit des Ethereum -Netzwerks nicht von einer einzelnen Client -Implementierung abhängen sollte. Es gibt BesutAnwesend NethermindAnwesend Öffnen Sie Und Turbogeth und andere zur Auswahl.
Bitte melden Sie sich entweder über Sicherheitslücken über die Sicherheitsanfälligkeiten durch https://bounty.ethereum.orgoder über bounty@ethereum.org oder über Security@ethereum.org.

