Bug in Bitcoin Unlimited: Hacker schaltet mehr als 500 Nodes aus

"A modern Hacker" von David Restivo via flickr.com. Lizenz: Creative Commons 2.0

Bitcoin Unlimited hat gestern einen Bug gefixt. Allerdings hatte ein Hacker kurz darauf einen Angriff gegen diese Schwachstelle gestartet, der 500 Bitcoin Unlimited Knoten, die das Update noch nicht eingespielt hatten, herunterfuhr. Mittlerweile sind zwar fast 300 der ausgefallenen Knoten wieder im Netz – doch es werden erneut Zweifel an der Kompetenz der Bitcoin Unlimited Entwickler laut.

Gestern Nacht geschahen drei Dinge.

Zuerst, Um acht am Abend, veröffentlichte Bitcoin Unlimited Entwickler Andrew Stone einen neuen, undokumentierten Release. In diesen war ein Bugfix eingespielt, der eine Schwachstelle von Unlimiteds Blockverteiler Xthin schloss. Und zwar war es möglich, über xthin ungültige Daten einzuschleusen, die nicht nur Verwirrung stifteten, sondern das ganze Programm abschaltete. Es war möglich, einen Bitcoin Unlimited Knoten mit einem bestimmten Datensatz per Fernsteuerung abzuschalten. Mit dem Bugfix werden solche Angriffe abgelehnt und die Absender blockiert.

Allerdings war es schon zu spät, um einen Imageschaden zu verhindern. Nur eine Stunde später geschah nämlich das zweite. Der Core-Entwickler Peter Todd – nicht eben ein Fan von Unlimited – twitterte: “Sieht so aus, als sei der Fernsteuerungs-Crash DoS seit einem Jahr in Bitcoin Unlimited, vielleicht noch länger.”

Der Bug ist in der Tat ernst. Peter Todd weist zu recht darauf hin, dass es bedenklich ist, dass ein solcher Bug gut ein Jahr lang unentdeckt geblieben ist. Dass er jedoch zu einem Zeitpunkt, ab dem der Bug bereits gefixt ist, aber das Update noch nicht überall eingespielt ist, darauf hinweist, dürfte ein Tribut an die aufgeheizte Stimmung sein, in der sich die Bitcoin Community derzeit befindet. Der lange, mal mehr, mal weniger schwelende Bitcoin-Bürgerkrieg (den ich schon Anfang 2015 vorausgesagt habe) lädt sich wieder auf.

Die Anzahl von Bitcoin Unlimited Nodes ist gestern Nacht eingebrochen.

Denn drittens hat ein Hacker kurz nach Peter Todds tweet genau diesen Bug ausgenutzt, um einen DoS-Angriff gegen alle Bitcoin Unlimited Knoten zu starten, die Xthin aktiviert und noch kein Update eingespielt hatten. Sie erhielten eine ungültige Xthin-Datei und fuhren herunter. Von den knapp 800 Bitcoin Unlimited Nodes fielen auf einen Schlag 350 bis 500 vom Netz. Nur die Knoten, die den Bugfix bereits installiert hatten oder, wie die Miner, kein Xthin nutzen, blieben stehen. Würde jeder Bitcoin Unlimited benutzen, hätte ein solcher Angriff das gesamte Bitcoin-Netzwerk nahezu zum Aussetzen gebracht.

Und was folgt aus all dem?

Erstens zeigt der Vorfall, wie fragil Bitcoin sein kann. Satoshi Nakamoto hat einmal gesagt, es gebe mehr DoS-Angriffsmöglichkeiten, als er fixen könne. Kleine Details – wie in diesem, ein Stück Code das gewöhnlich nicht mit kompiliert wird, im Falle von Bitcoin aber doch – können die Stabilität des gesamten Systems bedrohen.

Zweitens bestätigt der Vorfall den Vorwurf an Bitcoin Unlimited, nicht genügend Kompetenz und Erfahrung mit Bitcoin mitzubringen, um ein Software-Projekt wie dieses zu übernehmen. Das Vertrauen, das ein Referenz-Client benötigt, muss sich Unlimited erst noch verdienen. Und nach dem Vorfall steht es nicht bei Null, sondern noch tiefer.

Drittens zeigt der Angriff, dass Vielfalt von Implementierungen resilient macht. Weil Core nicht Unlimiteds xthin für die Blockdistribution nutzt, sondern das eigens entwickelte compact blocks, waren diese Nodes ebenso wenig betroffen wie Classic, XT, bcoin oder btcd Nodes. Eine Vielfalt an Clienten hilft dem Netzwerk, fortzubestehen, wenn einer ausfällt. Passend dazu hat vor kurzem übrigens btc.com – ein Tochter-Pool von BitMain – den ersten Block mit der Javascript-Implementierung von Bitcoin, bcoin, gemined.

Drittens demonstriert der Vorfall einmal mehr, wie weit Bitcoin ins Kriegsgebiet abgerutscht ist. Ein Bug wird, sobald er veröffentlicht ist, für einen DoS-Angriff ausgenutzt, und aus diesem folgt prompt eine Propaganda-Schlacht zwischen den beiden Lagern. Allerdings ist das genau das, was Bitcoin muss: er muss im Kriegszustand Bitcoin bestehen können, um eine solide Währung zu sein. Gerade dann. Ein Bitcoin, der nur funktioniert, weil die Bösen einmal Pause machen oder nachsichtig sind, ist nicht besonders viel wert.

About Christoph Bergmann (1086 Articles)
Das Bitcoinblog wird von bitcoin.de gesponsort, ist inhaltlich aber unabhängig und gibt die Meinung des Redakteurs Christoph Bergmann wieder. Wenn Ihnen das Blog gefällt, freuen wir uns über Spenden an 1BvayiASVCmGmg4WUJmyRHoNevWWo5snqC. Jeder Satoshi wird dazu verwendet, um das Blog besser zu machen. Weitere Infos, wie Sie uns unterstützen können, finden Sie HIER. Gastbeiträge sind ebenfalls willkommen. Meinen öffentlichen PGP-Schlüssel sowie den Bitmessage-Schlüssel finden Sie HIER

15 Comments on Bug in Bitcoin Unlimited: Hacker schaltet mehr als 500 Nodes aus

  1. Christoph, es ist noch eine Ecke schlechter fuer BU gelaufen.

    Glaubt mir nicht, recherchiert selber: andrewStone(thezerg1), einer der Hauptentwickler von BU hat den fehler selbst in den Code eingebracht, hat ihn dann spaeter wieder entdeckt, 13 bis 14 tage oeffentlich auf github darueber mit anderen entwicklerndn diskutiert, und dann ,nach fast 2 wochen,diesen kritischen fehler an Core gemeldet.
    -Core konnte den fehler bei sich aber nicht finden, weil er nur in BU vorhanden ist, Andrew hat das aber allerdings…vergesssen.

    Leicht angesaeuert ueber soviel inkompetenz, hat peter tod ueber den exploit getweetet.
    Aber jeder haette ihn im github aufschnappen koennen, es war in keinem abgeschlossenen Bereich.Und wenn der Fehler wirklich wie von TheZerg angenommen auch in core existiert haette…was fuer eine Art von verhalten ist das bei einem 20milliarden Dollar projekt?

    -Uebrigens wird der exploit dadurch ausgeloesst, das irgendetwas nicht conformes sich an port 8333 zu verbinden versucht, etwas was staendig “in the wild” vorkommt.

    Und das alles auf einer codebasis die ein 1000stel des codes ausmacht den core testen muss..

    -es ist nicht mehr lustig

  2. Jacques Vrohmann // 15. March 2017 at 13:01 // Reply

    Deine Wortwahl (“Bürgerkrieg”, “Kriegszustand”, “Kriegsgebiet”) hilft nicht gerade dabei, die Diskussion um die Skalierung von Bitcoin zu versachlichen. Man darf bei der ganzen Debatte nicht vergessen, dass Bitcoin genauso funktioniert, wie es funktionieren soll. Und irgendwann wird sich auch eine Skalierungsvariante durchsetzen.

    Es ist in der Tat positiv, wenn es verschiedene Implementierungen gibt. Bitcoin Unlimited will aber erklärtermaßen das Netzwerk mit eigenen neuen Regeln forken und sich zum Standard aufschwingen. Wenn Roger Ver und seine Lakaien erfolgreich sind, wird von der erhofften Vielfalt nicht viel übrig bleiben. Aber vielleicht hat sich das mit dem Bug und der offensichtlichen Unfähigkeit der Bitcoin Unlimited-Entwickler gerade sowieso selbst erledigt.

    Was ist eigentlich aus dem Millionenzuschuss geworden, den Roger Ver in die Entwicklung von alternativen Implementierungen stecken wollte?

    • Ok, meine Wortwahl ist bestimmt überspitzt. Krieg ist immer, was man daraus macht. Ich sehe es auch so, dass eine Skalierungsvariante nicht aufgezwungen werden kann, sondern sich durchsetzen muss. Was meiner Meinung nach kein Grund gegen das Konzept oder die pure Existenz von BU ist (eher im Gegenteil).

      Die Sache mit dem Bitcoindevelopmentgrant enttäuscht mich bisher auch. Weiterhin nur das Statement. Schade.

  3. grammarguy // 15. March 2017 at 17:37 // Reply

    Hi Christoph gut recherchiert bei dem Artikel, großes Kompliment und danke dafür !
    Viele glauben ja das Peter Todd den Bug entdeckt und dann erst der Fix veröffentlicht wurde, wobei es in Wirklichkeit genau anders herum wahr.

  4. Vielleicht geschieht ja das bis zuletzt Undenkbare: DASH löst Bitcoin ab.

  5. ..falls sich jemand mal die “andere seite”(BU) und ihre Berichterstattung zu Gemuete fuehren moechte, hier der Bericht ueber den selben Vorfall, nur auf bitcoin.com, einer Bitcoin-Internet-seite von Roger Ver, einem der finaziellen Hauptunterstuetzer von Bitcoin Unlimited,
    auf english:

    https://news.bitcoin.com/unlimited-hashrate-increase-while-remote-crash-bug-reported-exploited-and-fixed-in-bitcoin-speed/?utm_source=dlvr.it&utm_medium=twitter

    Nur der vollstaendigkeit halber, Bitcoin-core befindet sich schon seit Jahren auf bitcoin.org.

  6. hans im glück // 15. March 2017 at 18:02 // Reply

    @Christian, lol das glaub keiner…. und wird auch nicht..

  7. Bitcoin unlimited basiert immer noch auf bitcoinCore 12.1 – in ihrem oeffentlich zugaenglichen Github kannst du lesen: “2417 commits behind bitcoin:master” ..

    Kein Kommentar.

  8. hans peter // 15. March 2017 at 20:50 // Reply

    ;), wusstet ihr, das BU eine Föderation gegründet hat, mit unter anderem einen Präsidenten und einen Sekretär hat :

  9. jemand hat eine pseudocode version des exploits gemacht:

    doesnt take dream team to avoid: if (msg==A) { handlerA(); } else if (msg==B) { handlerB();} else { assert(0); } in *network code*

    assert(0), das war wirklich der auslöser, löscht einfach alle zugewiesenen Werte aus allen Variablen.
    Ganz schlechte Idee…und das ganze im auf empfang geschalteten netzwerkcode – es gibt eigentlich nur die Erklärung, dass derjenige nicht wusste, daß das der netzwerkcode ist..

  10. BTU brauch kein Mensch…

  11. Also mein Bitcoin Core stürzt auch ab und zu mal ab… Ein Entwickler, der von sich behautet bugfreien Code zu schreiben, sagt schlicht nicht die Wahrheit.

  12. ösldkjöfdlgdgf // 19. March 2017 at 21:28 // Reply

    “Nur die Knoten, die den Bugfix bereits installiert hatten oder, wie die Miner, kein Xthin nutzen, blieben stehen.”
    Du meinst doch sicherlich “…liefen weiter”, oder?

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 )

Twitter picture

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

Facebook photo

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

Google+ photo

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

Connecting to %s