Wszystkie artykuły
ŚredniCase Studies

Atak na The DAO: Hack, który podzielił Ethereum

Czerwiec 2016. $60 milionów skradzionych. Ethereum pęka na dwoje. Historia najbardziej brzemienna w skutki hacka crypto i narodziny Ethereum Classic.

28 sierpnia 2025
5 min czytania
Atak na The DAO: Hack, który podzielił Ethereum meme

Pogłęb temat z AI

Kliknij → prompt skopiowany → wklej w czacie AI

To jest historia hacka, który prawie zabił Ethereum.

Nie z powodu skradzionych $60 milionów. Ale z powodu tego, co stało się potem.

Społeczność się podzieliła. Blockchain się rozwidlił. I pytanie, które wciąż nawiedza crypto: czy kod to naprawdę prawo?


Czym było The DAO?

Kwiecień 2016. Ethereum ma niecały rok. Smart contracty to gorący temat.

Ktoś ma pomysł: co jeśli stworzymy zdecentralizowany fundusz venture? Bez VC. Bez partnerów. Tylko kod i posiadacze tokenów.

Nazywają to The DAO - The Decentralized Autonomous Organization.

Koncept:

  • Każdy może kupić tokeny DAO za ETH
  • Posiadacze tokenów głosują, które projekty finansować
  • Sfinansowane projekty zwracają zyski do DAO
  • Wszystko działa na smart contractach

To radykalny eksperyment w zdecentralizowanym zarządzaniu.

I działa. Jakoś.

$150 milionów wpływa podczas crowdsale. 14% całego istniejącego ETH. Największy crowdfund w historii w tamtym czasie.

Przyszłość jest tutaj.


Podatność

Jedna funkcja The DAO: możesz zrobić "split" - opuścić The DAO i zabrać swoje ETH. Demokratyczne wyjście.

Funkcja split działa tak:

function splitDAO(uint _proposalID) {
    // Sprawdź czy split jest dozwolony
    // ...

    // Oblicz udział użytkownika
    uint fundsToBeMoved = (balances[msg.sender] * address(this).balance) / totalSupply;

    // Wyślij ETH do użytkownika
    msg.sender.call.value(fundsToBeMoved)();

    // Zaktualizuj saldo użytkownika
    balances[msg.sender] = 0;
}

Widzisz problem?

ETH jest wysyłane przed aktualizacją salda.

To jest podręcznikowy reentrancy.


Atak

17 czerwca 2016. 3:34 AM UTC.

Nieznany atakujący zaczyna drenować The DAO.

Oto co zrobił:

Krok 1: Stwórz złośliwy kontrakt, który może otrzymywać ETH

Krok 2: Wywołaj splitDAO() z tym kontraktem

Krok 3: Gdy The DAO wysyła ETH, funkcja fallback złośliwego kontraktu się uruchamia

Krok 4: Funkcja fallback wywołuje splitDAO() ponownie

Krok 5: The DAO sprawdza saldo - wciąż oryginalna kwota (jeszcze nie zaktualizowane!)

Krok 6: The DAO wysyła ETH ponownie

Krok 7: Powtarzaj aż wyczerpane

Atakujący nie zrobił nic sprytnego. Po prostu wywołał tę samą funkcję raz za razem zanim pierwsze wywołanie się skończyło.

3.6 miliona ETH wyczerpane. $60 milionów w tamtym czasie. Dzisiaj byłyby to miliardy.


Dlaczego tego nie wychwycono?

Dobre pytanie. The DAO było audytowane. Wielokrotnie.

Ale:

  • Reentrancy nie był jeszcze dobrze znanym wzorcem ataku
  • Kod był skomplikowany (ponad 20 plików)
  • Skupiano się na logice zarządzania, nie na edge case'ach
  • "Zaudytowaliśmy to" stworzyło fałszywe poczucie bezpieczeństwa

Badacz bezpieczeństwa Peter Vessenes ostrzegał przed dokładnie tą podatnością dwa tygodnie wcześniej. Został zignorowany.


Reakcja społeczności

Atak postawił założycieli Ethereum w niemożliwej sytuacji.

Opcja 1: Nic nie rób. "Kod jest prawem." Atakujący wykorzystał bug uczciwie. Trudno.

Opcja 2: Soft fork. Umieść skradzione środki na czarnej liście. Atakujący nie może ich ruszyć.

Opcja 3: Hard fork. Cofnij blockchain. Zwróć środki oryginalnym właścicielom.

Opcja 1 oznaczała zaakceptowanie że $60M przepadło. A inwestorzy The DAO to m.in. członkowie Ethereum Foundation.

Opcja 2 miała problemy techniczne (wykryto wektor ataku DOS).

Opcja 3 oznaczała złamanie niezmienności. Całego sensu blockchaina.

Vitalik Buterin początkowo wspierał soft fork. Gdy okazał się wadliwy, społeczność zagłosowała za hard forkiem.


Fork

20 lipca 2016. Blok 1,920,000.

Ethereum wykonuje hard fork. Skradzione ETH wraca do oryginalnych właścicieli.

Ale nie wszyscy się zgadzają.

Mniejszość społeczności odmawia aktualizacji. "Kod jest prawem," mówią. Nie można po prostu cofać transakcji, które ci się nie podobają.

Kontynuują starą wersję łańcucha.

Ethereum Classic się rodzi.

Jeden blockchain staje się dwoma:

  • Ethereum (ETH) - Rozwidlony łańcuch, środki zwrócone
  • Ethereum Classic (ETC) - Oryginalny łańcuch, atakujący zachowuje środki

Atakujący ostatecznie wypłacił część ETC. Miliony dolarów. Legalnie, tak jakby.


Następstwa

Hack The DAO zmienił wszystko.

Dla bezpieczeństwa:

  • "Checks-Effects-Interactions" staje się ewangelią
  • Guardy reentrancy stają się standardem
  • Bezpieczeństwo smart contractów staje się profesją
  • Bug bounty stają się powszechne

Dla zarządzania:

  • Hard forki stają się znanym narzędziem
  • "Niezmienność" okazuje się negocjowalna
  • Zarządzanie społecznością przechodzi test

Dla filozofii:

  • "Kod jest prawem" się komplikuje
  • Konsensus społeczny przeważa nad regułami technicznymi
  • Decentralizacja ma granice gdy chodzi o pieniądze

Kim był atakujący?

Nieznany. Prawdopodobnie.

W 2022 dziennikarka Laura Shin twierdziła, że zidentyfikowała atakującego jako Toby'ego Hoenischa, programistę mieszkającego w Austrii. Zaprzeczył.

Brak oskarżenia. Atak wykorzystał bug w kodzie. Czy to była kradzież? Czy tylko użycie oprogramowania zgodnie z tym jak zostało napisane?

System prawny nie ma dobrej odpowiedzi.


Czy fork był słuszny?

Ta debata nigdy nie umiera.

Za forkiem:

  • $60M skradzione niewinnym ludziom
  • Bug był oczywisty, intencja była złośliwa
  • Społeczność za tym zagłosowała
  • Ethereum przetrwało i rozkwitło

Przeciw forkowi:

  • Ustanawia precedens interwencji
  • "Niezmienność" staje się warunkowa
  • Kto decyduje które hacki są cofane?
  • Atakujący postępował zgodnie z regułami kodu

Obie strony mają rację. Żadna nie przekonuje drugiej.

Fork się wydarzył. Ethereum jest warte 100x więcej niż było. Ale pytanie pozostaje: czy to było ratowanie czy naruszenie zasad?


Wyciągnięte wnioski

1. Prosty kod ma znaczenie. The DAO było skomplikowane. Złożoność ukrywa bugi. Preferuj prostotę.

2. Audyty to nie magia. Wiele audytów tego nie wyłapało. Audyty pomagają ale nie gwarantują bezpieczeństwa.

3. Nowe wzorce są ryzykowne. Reentrancy nie był jeszcze dobrze znany. Early adopterzy biorą na siebie wczesne ryzyko.

4. Niezmienność jest społeczna. Techniczna niezmienność nic nie znaczy jeśli społeczność zgodzi się na zmianę.

5. Testuj tryby awaryjne. The DAO nie miało planu na duży hack. Gdy się wydarzył, chaos.


The DAO dzisiaj

Kod The DAO wciąż jest na Ethereum. Pomnik lekcji za $60 milionów.

Współczesne DAO się nauczyły:

  • Prostsze mechanizmy wypłat
  • Time locki na środkach
  • Stopniowe uwolnienia
  • Awaryjne funkcje pauzy

Koncept DAO przetrwał. Stał się mainstreamowy. Ale wszyscy pamiętają: tak to się zaczęło.


Hack The DAO to kanoniczny przykład reentrancy. Jeśli chcesz dogłębnie zrozumieć podatność, zobacz nasze techniczne omówienie.


Dalsze czytanie:

  • Odtworzenie Ataku na The DAO - Zobacz kod
  • "The History of The DAO and Lessons Learned" - Vitalik Buterin
  • "Thoughts on The DAO Hack" - Phil Daian

Podobał Ci się artykuł? Obserwuj mnie!

@t0tty3
#the-dao#reentrancy#hack#ethereum-classic#historia

Pogłęb temat z AI

Kliknij → prompt skopiowany → wklej w czacie AI