Website-Icon BitcoinBlog.de – das Blog für Bitcoin und andere virtuelle Währungen

Bug in Bitcoin Core – User sollten unbedingt ihren Node updaten

Bugs sind ein dankbares Thema für Motive. Marienkäfer in einer Blume. Bild von Mike Deal via flickr.com. Lizenz: Creative Commons

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 Bitcoin Cash 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.

Update: Es gibt mittlerweile ein „Full Disclosure“ von Bitcoin Core. Diesem zufolge hat es sich nicht nur um eine DoS-Drohung gehandelt, sondern es war durch den Bug auch möglich, Bitcoin zu inflationieren. Damit dürfte es sich um den schwerwiegendsten Bug seit 2010 handeln.

Update II: Der Bug wurde von Awemany entdeckt, einem Entwickler von vor allem Bitcoin Unlimited und ABC. Ich durfte Awemany einmal kennenlernen und ihn inspirierend, sympathisch und clever. Allerdings hat er eine sehr starke Meinung zu Core und der Blocksize-Sache, die auch in seinem ansonsten exzellent geschriebenen Bericht zum Auffinden des Bugs nicht zu übersehen ist

Die mobile Version verlassen