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

About Christoph Bergmann (1354 Articles)
Das Bitcoinblog wird von Bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder, es es seit Mitte 2013 führt. Christoph hat vor kurzem ein Buch geschrieben: Bitcoin: Die verrückte Geschichte vom Aufstieg eines neuen Geldes. Das Buch stellt Bitcoin in seiner ganzen Pracht dar. Ihr könnt es direkt auf der Webseite Bitcoin-Buch.org bestellen - natürlich auch mit Bitcoin - oder auch per Amazon. Natürlich freuen wir uns auch über Spenden in Bitcoin oder Bitcoin Cash an die folgende Adresse: 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Wer will, kann uns auch Hier mit Lightning spenden. Tipps für Stories sind an christoph.bergmann@mailbox.org immer erwünscht. Wer dies privat machen möchte, sollte meinen PGP-Schlüssel verwenden.

12 Comments on Bug in Bitcoin Core – User sollten unbedingt ihren Node updaten

  1. Danke für den Bericht und die vielen interessanten Zusatzinfos!
    Hatte schon Heute früher einen entsprechenden englischsprachigen Bericht gelesen – der war aber nur sehr rudimentär…
    Anm.: “Allerdings zahlt sich hier aus, dass BitcoinABC ein relativ diverses Ökosystem von Clients hat.” sollte vermutlich heissen
    “Allerdings zahlt sich hier aus, dass Bitcoin Cash ein relativ diverses Ökosystem von Clients hat.”
    Viele Grüße,
    Tomm

  2. Ich halte es für realistisch, dass der Bug absichtlich eingebracht wurde. Die Core Leute ziehen sonst ja auch alle Register. Man ist sich für keine Maßnahme zu schade.

  3. Es wären tatsächlich nur die Nodes betroffen, die den block vom ursprünglichen Sender erhalten.
    Potentiell sind 95% aller nodes gefährdet, jedoch würde nur ein Bruchteil davon diesen malicious block zu gesicht bekommen und crashen.

    Nur valide Blöcke sollten und werden meines Wissens von node zu node weitergegeben.
    Es müssten schon mutwillig ein Großteil der gefährdeten Nodes direkt mit dem Block beliefert werden um Auswirkungen zu bewirken.

    Diese Thematik in den Erklärungen zum Bug zu unterschlagen grenzt an FUD und Core-Bashing.

    • Hm, soweit habe ich nicht gedacht, und die Erklärung habe ich bei meinen Recherchen nirgendwo gefunden. Gute Ergänzung.

      Wenn jemand 12,5 BTC investiert, um Bitcoin anzugreifen – dann dürfte er doch auch mutwillig die Nodes mit dem Block beliefern, oder?

      Den Vorwurf von FUD und Core-Bashing war unnütz, aber auch erwartbar.

    • Small World Network

    • Der Block-Producer kann sich zu jedem beliebigen Knoten im Netzwerk verbinden und seinen Block an diesen weiterleiten. So einen Angriff kann man realistisch gesehen sehr gut fahren, man braucht eine große Mining-Farm und mehrere Knoten die sich parallel zu allen anderen Knoten verbinden und den Block somit weiterleiten. Siehe: https://bitnodes.earn.com/nodes/

  4. Werde mich in Zukunft zügeln 🙂

    Trotzdem guter Artikel, weiter so!

  5. Ja, wieder ein guter Artikel!
    Habe es heute morgen auf youtube gesehen, ich hoffe Christoph B. ist nicht böse wenn ich dafür ein wenig Werbung mache?
    Dieser Ivan ist recht jung, jedoch ein guter Programmierer, er erklärt solche bugs indem er diese live skiziert. Hier im deutschen Raum ist dieser Blog die Nr. 1, auf youtube schätze ich diesen hier sehr :

  6. The Good, the Bad and the Ugly Details of One of Bitcoin’s Nastiest Bugs Yet

    https://bitcoinmagazine.com/articles/good-bad-and-ugly-details-one-bitcoins-nastiest-bugs-yet/

    mal ne andere quelle..

  7. Hey, du hast im Nachtrag nicht erwähnt, dass ein Bitcoin Cash Entwickler den Bug entdeckt hat 😀
    Obwohl es doch immer hieß: “BCash hat nur unfähige Entwickler”, komisch…

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Google+ photo

You are commenting using your Google+ account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s