Einfach ausgedrückt, wie wurde das DAO gehackt und Gelder daraus entfernt?

Wie wurde das DAO gehackt? Kann das jemand in einfachen Worten erklären?

Antworten (4)

Die einfache Erklärung auf hoher Ebene wäre wie folgt:

Wenn Sie (als Inhaber eines DAO-Tokens) sich von DAO trennen, erstellt es ein neues untergeordnetes DAO und zahlt Ihnen (in einer Transaktion) Ihren Anteil zurück, indem es ihn an das neue geteilte DAO (Ihr DAO) sendet.

splitDAODer Angreifer erzeugte eine Schleife (indem er die Funktion rekursiv aufrief ), wodurch das DAO mehrmals statt einmal bezahlte.

Diese Schleife veranlasste das DAO , wiederholt (27996 Mal) den Betrag von 237.62451099999999 Etherauf das neue Kind-DAO zu übertragen.

Der Ethcore-Blogpost leistet gute Arbeit bei der Beschreibung der Geschichte des Hacks. Im Grunde wussten sie zwei Tage vor dem Angriff von der Schwachstelle und haben die ihrer Meinung nach betroffene Funktion behoben. Lesen Sie hier mehr im slock.it-Blog .

Von dem Typen, der vor dem Angriff über die Schwachstelle schrieb:

Ich habe diese Schwachstelle letzte Woche geschrieben: Sie können mehr darüber in meinem Blog lesen. In einfachen Worten, es ist, als würde die Bankangestellte Ihren Kontostand nicht ändern, bis sie Ihnen das gesamte angeforderte Geld gegeben hat. "Kann ich 500 $ abheben? Warte, kann ich vorher 500 $ abheben?"

Usw. Die intelligenten Verträge, wie sie entworfen wurden, prüfen nur, dass Sie einmalig 500 US-Dollar zur Verfügung haben, und lassen sich selbst unterbrechen.

Den von ihm erwähnten Blogbeitrag finden Sie hier .

Eine vernünftige Analogie, die ich gehört habe, ist:

  • Sie gehen zu einem Geldautomaten und heben das Geld ab.
  • Nachdem der Geldautomat Ihnen das Geld gegeben hat, trennen Sie den Geldautomaten, bevor er Ihr Konto aktualisiert.
  • Sie schließen den Geldautomaten wieder an, heben Geld ab und wiederholen den Vorgang.

Eines der Dinge, die dazu beitragen können, diesen wiedereintrittsfähigen Angriff abzuschwächen, ist die Aktualisierung Ihres Geldautomaten zuerst auf Ihrem Konto, bevor Sie Ihnen das Geld geben.

Es verwendet wiederholt einen Teil des Dao-Codes, um Ether an ein neues Kind-Dao zu senden, das unter der Kontrolle der Hacker steht, dort aber für 27 Tage für die Auszahlung gesperrt ist.

Warum konnte er es nicht einfach in seine eigene Brieftasche extrahieren? Da der Code dies für ein neu erstelltes Dao für einen vordefinierten Zeitraum von 27 Tagen nicht zulässt.

warum konnte er es nicht einfach in seine eigene Brieftasche extrahieren?
Weil das Kind-Dao immer noch durch Code gesteuert wird, denke ich.
Yap, Sie können den untergeordneten Dao-Code tatsächlich hier sehen: etherchain.org/account/…