Bug in Bitcoin Core – User sollten unbedingt ihren Node updaten

Fast 95 Prozent aller Bitcoin-Nodes laufen auf der Bitcoin-Core-Software. Diese hatte einen Bug, der es einem Miner erlaubte, mit einem speziell designten Block alle Nodes abstürzen zu lassen. Nach einer anonymen Meldung wurde der Bug gefixt. Der Vorfall zeigt, dass Fehler nicht zu vermeiden sind – und dass mehrere Implementierungen nützlich sind.

Eine “Denial-of-Service Verwundbarkeit”, die durch die Miner ausgenutzt werden kann, sei in den Bitcoin-Core-Versionen 0.14.0 bis 0.16.2 gefunden worden, schreiben die Core-Entwickler in den Release-Nodes der neuen Version 0.16.3. User sollten daher so schnell wie möglich auf die Version 0.16.3 upgraden.

Fast 95 Prozent aller Bitcoin-Knoten benutzen die Software von Bitcoin Core. Diese Knoten waren seit dem Release von Core 0.14.0 am 3. August 2017 angreifbar. Mehr über den Bug erklärt der Bitcoin Optech Newsletter: Der Bug führe dazu, dass Bitcoin Core abstürze, wenn es versuche, einen Block zu validieren, der eine Transaktion beinhaltet, die denselben Output zweimal ausgebe. Ein solcher Block ist ungültig und kann nur von einem Miner erzeugt werden, der bereit ist, die Block-Belohnung von 12,5 Bitcoin – knapp 70.000 Euro – wegzuwerfen.  Das ist nicht wenig, aber auch nicht besonders viel, um die Basis-Infrastruktur von Bitcoin zumindest vorübergehend herunterzufahren.

Eingeführt wurde der Bug von Matt Corallo, Blockstream-Mitgründer und Mitarbeiter von ChainCode Labs. Corallo hat im Herbst 2016 eine Prüfung von Inputs von Transaktionen entfernt, um etwa eine halbe Millisekunde an Arbeit beim Empfangen eines Blocks einzusparen. Diese fehlende Prüfung macht es möglich, dass die Nodes einen Block empfangen, der sie abstürzen lässt. Die Änderung ging reibungslos durch die Peer Reviews der Core-Entwickler, vermutlich, weil Matt Corallo einen äußerst guten Ruf in der Szene genießt.

Der Bug war nicht nur in der Software von Bitcoin, sondern in jeder Kryptowährung, deren Leitimplementierung auf Bitcoin Core aufbaut und Upgrades von Core regelmäßig übernimmt: Unter anderem Litecoin, Bitcoin Gold, PaiCoin, Syscoin, und GlobalToken. Auch bei Bitcoin Cash sind die Clients von BitcoinABC sowie von BitcoinSV betroffen. Allerdings zahlt sich hier aus, dass BitcoinABC ein relativ diverses Ökosystem von Clients hat. Bitcoin Unlimited, der nach BitcoinABC zweitwichtigste Client, sowie BitcoinXT haben den Bug nicht.

Der Bug war schwerwiegend, aber nicht verheerend. Er hätte das Bitcoin-Netzwerk kurzzeitig eingefroren, da alle Nodes und Miner abgestürzt wären, aber an sich keinen bleibenden Schaden hinterlassen. Finanzielle Verluste wären nur indirekt geschehen, etwa wenn ein Angreifer den Bug ausgenutzt hätte, um zu forken oder andere Double-Spend-Angriffe zu starten, die nur mit einer geringen Node-Basis möglich gewesen wären. Einen finanziellen Vorteil hätte sich der Angreifer nur erschleichen können, wenn er durch Margin Trading von einem möglichen Absturz des Preises profitiert hätte.

Vorstellbar wäre auch ein Angriff auf das Lightning-Netzwerk, da ein Lightning-Node einen Bitcoin-Node braucht, um es zu erkennen, wenn ein Channel auf betrügerische Weise geschlossen wird. Ein User hat zwar etwa einen Tag Zeit, um einen solchen Angriff zu registrieren, aber wenn er diese Frist versäumt, könnte ihm jemand etwas stehlen. Ich nehme mal an, man hätte aus meinem Lightning- Node etwa 20 Euro stehlen können, da ich vermutlich zu langsam mit dem Update gewesen wäre. Aber da der Angriff sehr viel teurer als 20 Euro ist, und ich sehr viel aufmerksamer wäre, wenn ich fünfstellige Beträge darin verwahren würde, sehe ich das gelassen. Es wäre aber denkbar, dass ein großes, breites und vielgenutztes Lightning-Netzwerk einmal ähnliche Bugs schlimmer macht.

Ärgerlicher als der tatsächliche Bug scheint, einmal mehr, das soziale und politische Drumherum zu sein. Denn Beobachter der Szene dürften mitbekommen haben, dass sich die Bitcoin Entwickler – beziehungsweise deren Fans – als nahezu unfehlbar darstellen. “Die besten Entwickler der Welt” ist ein Satz, den man in den vergangenen Jahren immer wieder gehört hat, wie auch die Idee, dass das Peer-Review der Core-Entwickler jegliche Fehler verhindert. Exemplarisch hierfür dürfte ein Tweet von Bitcoin-Evangelist Andreas Antonopolous sein, der einmal sagte, dass Bugs auch im Core-Code vorkommen – es aber “niemals in einen Release für die Produktion schaffen.”

Ironischerweise hat Antonopolous damals auf einen Bug in Bitcoin Unlimited angespielt, der zum Höhepunkt der Blocksize-Kriege ausgenutzt wurde. Dieser Bug wurde damals in den Core-Foren ausgiebig debattiert und als Beispiel dafür genommen, weshalb nur die Core-Entwickler in der Lage sind, Bitcoin zu führen. Selbst ich als Anhänger von Bitcoin Unlimited schrieb damals, der Vorfall bestätige “den Vorwurf an Bitcoin Unlimited, nicht genügend Kompetenz und Erfahrung mit Bitcoin mitzubringen, um ein Software-Projekt wie dieses zu übernehmen.”

Ähnliche Marketingkampagnene haben sich wiederholt, als es Bugs bei Ethereum gab, und als ein Core-Entwickler einen Bug bei Bitcoin ABC meldete. Nur die Core-Entwickler sind in der Lage, so die Message, Bugs zu verhindern und im Falle ihres Auftretens kompetent mit ihnen umzugehen, so die Story, die immer wieder erzählt wird. Laut den Entwicklern von Bitcoin Unlimited und Bitcoin ABC geschah dies in diesem Fall jedoch nicht; der Release von Bitcoin Core 0.16.3 machte einen Bug öffentlich, der andere Implementierungen gefährden kann, ohne dass der Release mit deren Entwicklern ausreichend koordiniert worden sei. Core, könnte man schlussfolgern, kocht auch nur mit Wasser.

Während die meisten Bitcoin-Magazine den Bug verschweigen oder am Rande erwähnen – vermutlich, weil er schlecht in den üblichen Narrativ passt – lässt das Magazin TrustNodes Core die gesamte Fallhöhe spüren. Es sei überraschend, dass es der Bug in den Code geschafft hat, und noch überraschender, dass die Änderung nur ungenügend getestet und der Fehler von den anderen Core-Entwicklern nicht entdeckt wurde. Dies, spekuliert TrustNodes, lege den Verdacht nahe, dass der Bug absichtlich in den Code gebracht wurde, um ihn im Fall eines Chain-Split oder einer Hardfork ausnutzen zu können. Zeitlich würde dies gut passen, da Ende 2016 ein Split tatsächlich zur Debatte stand, und da Matt Corallo selbst angekündigt hat, er kenne Bugs, die in einem solchen Fall ausgenutzt werden können.

Allerdings ist das nackte Spekulation, die an Verschwörungstheorien grenzt. Interessanter ist, dass der Bug illustriert, wie hilfreich multiple Implementierungen sein können. Dies wurde von Fans von Core immer wieder bestritten, weil verschiedene Implementierungen die Gefahr erhöhen, dass es durch Inkompatibilitäten zu Konsens-Fehlern kommt. Allerdings hat Ethereum in der Vergangenheit wiederholt gezeigt, dass die Dualität der Clients Geth und Parity die Sicherheit erhöhen, und auch Bitcoin Cash mit seinen verschiedenen Clients zeigt, dass verschiedene Implementierungen vor einem Bug wie diesem schützen können. Aber es ist, diesmal, ja auch nichts passiert.

The post Bug in Bitcoin Core – User sollten unbedingt ihren Node updaten appeared first on bitcoinmining.shop.

Shares