Wie wurde das DAO gehackt? Kann das jemand in einfachen Worten erklären?
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.
splitDAO
Der 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 Ether
auf 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:
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.
eth