Přejít na hlavní obsah

Hacknutí DAO: příběh Etherea Classic

Příběh hacknutí DAO v roce 2016 a jak reakce komunity vedla k vytvoření Etherea Classic jako samostatného řetězce.

Date published: 15. prosince 2021

Vysvětlující video od Junion, které vypráví příběh hacknutí DAO v roce 2016, jedné z největších digitálních loupeží v krypto historii, a jak kontroverzní rozhodnutí komunity Etherea provést fork blockchainu vedlo k vytvoření Etherea Classic.

Tento přepis je přístupnou kopií původního přepisu videa (opens in a new tab), které zveřejnil Junion. Byl lehce upraven pro lepší čitelnost.

Objevování (0:00)

Je pondělí 13. června 2016. Profesor informatiky na Cornellově univerzitě zkoumá kód DAO, jednoho z nejambicióznějších projektů v krypto prostoru. Celé měsíce prosazoval, aby byl projekt pozastaven, protože věřil, že obsahuje určité nedostatky, které by mohly ohrozit celou věc. Dnes ale nachází vážnou zranitelnost: chybu na řádku 666.

Obává se, že tato chyba by mohla hackerovi umožnit provádět potenciálně neomezené výběry podobné těm z bankomatu. I kdyby měl útočník na svém účtu jen 10 dolarů, mohl by je vybírat znovu a znovu, dokud by nezmizely všechny peníze. Do DAO byla investována čtvrtina miliardy dolarů a každý cent byl v ohrožení.

Slock.it, společnost stojící za DAO, uznává potenciální zneužití, ale prohlašuje, že jakýkoli útok by byl neproveditelný, takže všechny prostředky jsou stále v bezpečí. Provedou commit na GitHubu, ve kterém prohodí dva řádky kódu – opravu, která bude zahrnuta jako součást DAO Frameworku verze 1.1.

Ale právě když tým slavil vítězství, hacker tajně sledoval jejich kroky a vyvíjel exploit, který využíval přesně tuto chybu. Nyní je pátek, o čtyři dny později, a DAO bylo právě hacknuto o částku 55 milionů dolarů.

Stejně jako hacknutí sítě SWIFT o 81 milionů dolarů zveřejnilo díry v centralizovaném bankovním průmyslu a ransomwarový útok WannaCry odhalil kritické zranitelnosti v počítačových operačních systémech, hacknutí DAO odhalilo ranou křehkost bezpečnosti chytrých kontraktů ve světě, kde kód diktuje vše. Komunitu Etherea to zanechalo zdevastovanou, zatímco se zoufale snažila získat zpět kontrolu nad blockchainem.

Toto je příběh jedné z největších digitálních loupeží vůbec a odvážného pokusu přepsat historii tak, aby se to nikdy nestalo.

Co bylo DAO? (2:00)

Přichází DAO – zkratka pro decentralizovanou autonomní organizaci. Myšlenka byla inspirována crowdfundingem. Místo mnoha fondů pro různé projekty by existoval jeden fond, který by vládl všem, a neexistoval lepší způsob, jak toho dosáhnout, než pomocí DAO.

Při spuštění by investoři obdrželi 100 DAO tokenů za každý vložený ether. Tyto tokeny jim dávaly správu nad protokolem a představovaly jejich podíl v DAO. Držitelé tokenů mohli předkládat návrhy – například jste mohli navrhnout investovat jeden milion dolarů výměnou za 10% stake ve společnosti XYZ.

Jakmile návrh prošel počátečním ověřením, hlasovali by o něm všichni ostatní investoři. Během tohoto období mohli držitelé tokenů dát svůj hlas pro, pokud věřili, že investice přinese pozitivní očekávanou hodnotu, nebo proti, pokud věřili, že přinese negativní očekávanou hodnotu. Mohli také využít fórum k vyjádření svých názorů a čtení názorů ostatních.

Když období hlasování skončilo a bylo dosaženo kvóra 20 % všech tokenů, DAO automaticky převedlo specifikovaný ether do chytrého kontraktu, který představoval daný návrh. Jakýkoli ether vygenerovaný z těchto návrhů by se pak vrátil do pokladny. Bylo to jako jeden velký decentralizovaný hedgeový fond, navržený k vytváření zisku. Myšlenka byla taková, že moudrost davu pomůže vytvořit ty nejlepší investiční příležitosti.

Stále však musel existovat způsob, jak ochránit menšinu před útlakem ze strany většiny. Pokud menšinová skupina silně nesouhlasila s návrhem, který nemohla přehlasovat, místo hlasování proti mohla zavolat funkci rozdělení (split) a přesunout svůj ether z hlavního DAO do dceřiného DAO, čímž by se DAO v podstatě rozdělilo na dvě části. Tato funkce rozdělení bude později velmi důležitá.

Crowdfunding (4:01)

DAO bylo největším crowdfundingovým projektem vůbec, vybralo 12,7 milionu etherů – v té době v hodnotě 150 milionů dolarů. Odehrálo se to v rané éře Etherea, kdy byl projekt vystaven obrovskému množství humbuku a investorského FOMO.

Předtím byly projekty na Ethereu převážně jen libovolnými proof of concepty, ale toto byl plně fungující projekt s obrovským potenciálem. Byl zcela v bezpečí před jakýmikoli hacky, zabezpečený miliony těžařů po celém světě a byl decentralizovaný – celý projekt se skládal ze série chytrých kontraktů na Ethereu.

Šlo o neměnný kód hostovaný na nejbezpečnějším počítači na světě, což zajišťovalo klíčové vlastnosti DAO: organizace, která je zcela decentralizovaná a autonomní. Jakmile byly kontrakty 30. dubna nasazeny, žádná jediná entita – dokonce ani Slock.it – nemohla provádět změny v protokolu nebo zastavit jeho existenci. Jeho kód byl nesčetněkrát auditován různými vývojáři Etherea a byl všem přístupný k přezkoumání.

Hacknutí (5:02)

„Lonely, so lonely“ – název návrhu DAO č. 59. Je to jen normální návrh na rozdělení, ale ve skutečnosti právě zde začíná hacknutí. Poté, co hacker předložil návrh, následuje standardní sedmidenní období pro debatu, do kterého se může kdokoli svobodně zapojit. K tomuto rozdělení se však nikdo nepřipojí.

Je standardním postupem, že někdo zavolá rozdělení jen sám za sebe, vytvoří dceřiné DAO a poté vytvoří návrh, který pošle veškerý ether zpět do jeho peněženky. To umožňuje uživateli získat zpět své peníze kryté jeho DAO tokeny. Nyní uplynulo sedm dní a hacker má povoleno zavolat funkci rozdělení. Nikdo nic netuší.

Jakmile je však funkce rozdělení zavolána, komunita si uvědomí něco znepokojivého. Ether je z DAO odčerpáván rychlostí osm milionů dolarů za hodinu. Komunita se zoufale snaží přijít na to, co se děje. Vypadá to, že útočník rekurzivně volá funkci rozdělení – znovu a znovu, stovkykrát.

Pamatujete si na tu opravu chyby, která proběhla před čtyřmi dny? Je škoda, že neexistuje způsob, jak upravit kód chytrého kontraktu po jeho nasazení, takže tato oprava existovala pouze na GitHubu jako součást The DAO 1.1, zcela jiného DAO, které se teprve připravovalo. Tato malá oprava mohla všemu zabránit – jediné, co dělala, bylo prohození dvou řádků kódu tak, aby se zůstatek aktualizoval před samotnou výplatou.

Ale bez této opravy mohl kdokoli opakovaně volat funkci pro výběr etheru, než kontrakt aktualizoval jeho zůstatek. Je to jako bankomat, který nezmění váš zůstatek, dokud vám nevydá peníze. „Můžu si vybrat deset dolarů? Počkat, předtím, můžu si vybrat deset dolarů? Počkat, předtím…“

Skupina Robin Hood (6:55)

Držitelé DAO tokenů sledovali, jak jsou jejich investice pomalu odčerpávány z hlavního DAO do dceřiného DAO, známého také jako temné DAO (dark DAO). Navíc cena Etherea po těchto zprávách bleskově spadla z 20 na 15 dolarů. Bylo potřeba něco udělat a jediným způsobem bylo odčerpat zbytek dříve, než to udělá hacker. A tak začal závod o vyprázdnění.

Na druhém konci světa, ve svém bytě ve čtvrti Copacabana v Rio de Janeiru, se Alex Van de Sande probouzí a jeho telefon je zaplaven zprávami na Skypu. Otočí se na svou ženu a říká: „Pamatuješ, jak jsem ti říkal o té obrovské nehacknutelné hromadě peněz? Byla hacknuta.“

Alex se spojil s několika dalšími nezveřejněnými vývojáři a vytvořili skupinu, kterou přezdívali Robin Hood – etičtí hackeři (white-hat), kteří by odčerpali zbývající prostředky a vrátili je právoplatným majitelům. Neměli však čas navrhnout nové rozdělení, protože to by vyžadovalo sedmidenní období hlasování.

Místo toho se zaměřili na návrh č. 71, který měl skončit za několik hodin. Připojili by se k tomuto rozdělení a použili stejný hack k odčerpání všech zbývajících prostředků do tohoto dceřiného DAO. Od začátku útoku uplynulo šest hodin a zloději se podařilo ukrást 30 % etheru z DAO. Z nějakého neznámého důvodu však útok přestal fungovat. Transakce selhávaly a všemu byl konec.

Mezitím se Alex právě chystal spustit white-hat útok, aby zajistil zbývajících 70 % prostředků. Najednou ale ztratil připojení k internetu. Zbývalo mu jen 30 minut, a tak zběsile volal NET, svého brazilského poskytovatele internetu, ale dostal odpověď jen od robotického hlasu: „Vidíme, že ve vaší čtvrti je problém s internetem.“ Návrh na rozdělení skončil a on právě propásl okno k provedení útoku Robina Hooda.

Následující ráno se Alex pokusil znovu svolat skupinu, aby infiltrovali další návrh na rozdělení, ale ostatní byli zaneprázdněni. „Cítili jsme se jako nejhorší hackeři v historii. Překazil nám to špatný internet a rodinné povinnosti.“

Závod o vyprázdnění (9:10)

Čtyři dny po počátečním útoku bylo DAO znovu pod útokem. Odčerpávalo se pomalu – několik etherů za kolo – ale už nashromáždilo několik tisíc dolarů. Zdálo se, že jde o útočníka, který testuje terén. V tuto chvíli musel Robin Hood něco udělat.

Rozhodli se infiltrovat rozdělení č. 78, protože identifikovali kurátora návrhu a brzy končilo. Kontaktovali některé velryby, které rády darovaly své DAO tokeny, což týmu umožnilo zajistit šest milionů tokenů. Čím více tokenů kontrakt Robin měl, tím rychleji mohl odčerpávat ether. Útočník zrychlil tempo a přidali se další útočníci. Ale díky darům je Robin Hood dokázal předstihnout. To jim umožnilo zajistit 7,2 milionu etherů – 55 % DAO.

Fork (10:08)

Hlavní DAO bylo nyní vyprázdněno a všechny prostředky byly rozděleny mezi několik dceřiných DAO – dvěma hlavními byly white-hat DAO a temné DAO. Všechny peníze však byly časově uzamčeny. Žádný návrh nemohl být v rámci dceřiného DAO předložen, dokud neuplynula 27denní čekací lhůta. A i poté vyžadovalo odeslání prostředků na externí adresu předložení návrhu a čekání dva týdny. V podstatě zbývalo ještě 41 dní, než si hacker mohl vybrat to, co se rovnalo 5 % celkové nabídky Etherea.

Hacker se ale ke svému Ethereu nikdy nedostal. To, co se stalo potom, je jednou z nejodvážnějších a nejkontroverznějších epizod v historii blockchainu. Komunita se rozhodla, že nenechá hackera vyhrát. Chtěli přepsat historii tak, aby každá transakce zapojená do hacknutí byla zrušena a všichni dostali své peníze zpět. Rozhodli se provést fork Etherea.

Blockchain je jako seznam transakcí, který neustále roste s každým vytěženým blokem. Každá transakce je v blockchainu navždy zakořeněna. Ale pokud se více než 50 % těžařů domluví, mohou falešně pozměnit blockchain a přepsat historii, jakkoli chtějí. Obvykle se tomu říká 51% útok. Na tomto forku ale nebylo nic zlomyslného – komunita pouze získávala zpět peníze, které jí byly ukradeny.

Kód je zákon (11:48)

Přesto ne všichni s navrhovaným forkem souhlasili. Tvrdili, že kód je zákon. Z tohoto pohledu byl útočník méně hackerem a více chytrým právníkem, který si pečlivě přečetl podmínky kontraktu. Proto nebyly ve skutečnosti ukradeny žádné prostředky a měl by mít právoplatný nárok na ether z temného DAO.

Je důležité poznamenat, že samotné Ethereum nebylo nikdy ve skutečnosti hacknuto – byl to jen špatně napsaný chytrý kontrakt, který byl zneužit. Dvě různé věci. Navíc věřili, že věci, které se dějí na blockchainu, jsou neměnné a nikdy by se s nimi nemělo manipulovat bez ohledu na situaci.

Den po počátečním útoku poslal útočník do skupinového chatu DAO na Slacku otevřený dopis podepsaný svým soukromým klíčem:

„Pro DAO a komunitu Etherea: Pečlivě jsem prozkoumal kód The DAO a právoplatně jsem si nárokoval 3 miliony etherů a rád bych poděkoval DAO za tuto odměnu. Jsem zklamán těmi, kteří charakterizují použití této záměrné funkce jako ‚krádež‘. Využívám tuto explicitně nakódovanou funkci v souladu s podmínkami chytrého kontraktu. Soft nebo hard fork by se rovnal zabavení mého legitimního a právoplatného etheru. Takový fork by trvale a neodvolatelně zničil veškerou důvěru nejen v Ethereum, ale také v oblasti chytrých kontraktů a technologie blockchainu. Nenechte se mýlit: jakýkoli fork, soft nebo hard, dále poškodí Ethereum a zničí jeho pověst a přitažlivost.“

Při bližším zkoumání si lidé uvědomili, že podpis byl neplatný, takže tento dopis napsal pouze někdo, kdo o sobě tvrdil, že je útočník.

Na druhou stranu zastánci tvrdili, že „kód je zákon“ je příliš drastické prohlášení a že lidé by měli mít konečné slovo prostřednictvím sociálního konsensu. Hackerovi by nemělo být dovoleno profitovat ze zneužití, protože je to eticky špatné a s největší pravděpodobností nezákonné. Ale co je nejdůležitější, DAO bylo prostě příliš velké na to, aby padlo. Drželo přibližně 15 % celkové nabídky etheru.

Ethereum Classic (14:34)

V události, která připomínala finanční krizi z roku 2008, vývojáři Etherea zachránili DAO. Vitalik Buterin, tvůrce a hlavní vývojář Etherea, se neomlouval za to, že prosazoval fork. V jednom rozhovoru později řekl: „Někteří uživatelé Bitcoinu vidí hard fork jako něco, co určitým způsobem porušuje jejich nejzákladnější hodnoty. Osobně si myslím, že tyto základní hodnoty, dohnané do takových extrémů, jsou hloupé.“

Tyto názory převládly u většiny komunity Etherea. Kontroverzní hlasování komunity – kde jeden ether se rovná jednomu hlasu – ukázalo 87% podporu pro fork. Takže na bloku 1 920 000 počítačové uzly po celém světě aktualizovaly svůj software a přijaly fork. Veškerý ether z DAO a dceřiných DAO byl přesunut do refundovacího kontraktu.

Tím to ale nekončí. Původní blockchain Etherea – ten s hacknutím DAO – pokračoval dál. Ve skutečnosti rostl. Těžaři, kteří se postavili proti forku, pokračovali v těžbě bloků a transakce se stále prováděly. Následující den burza Poloniex zalistovala tuto minci a začala se obchodovat za 2 dolary za kus. Tento řetězec vešel ve známost jako Ethereum Classic – původní, nezměněný blockchain.

Pokud jste drželi ether před forkem, měli byste nyní jedno Ethereum a jedno Ethereum Classic. Pokud jste drželi jeden ether v DAO, mohli byste si vybrat jedno Ethereum z refundovacího kontraktu. A pokud byste právě hacknuli DAO, vydělali byste slušné jmění v Ethereu Classic – kolem sedmi milionů dolarů.

Odkaz DAO (16:14)

Zpočátku Ethereum Classic získalo na síle jako alternativa se silnou komunitou blockchainových fundamentalistů, kteří nesouhlasili se záchranou. Od té doby se však Ethereu Classic nepodařilo získat trakci a ve skutečnosti existuje pouze jako myšlenka s malým využitím. Zatímco Ethereum je domovem tisíců protokolů, Ethereum Classic má jen několik základních. Je jasné, že fork vyhrál.

O dva měsíce později Robin Hood převedl 2,9 milionu svého Etherea Classic na Poloniex a vše prodal za Ethereum ve snaze srazit cenu. 14 % bylo úspěšně převedeno, ale 86 % bylo zmrazeno burzou Poloniex a vráceno skupině. Robin Hood vytvořil refundovací kontrakt v síti Ethereum Classic pro uživatele zasažené hacknutím DAO.

Pokud jde o hackera, odešel s 3,6 miliony Etherea Classic – dnes v hodnotě 150 milionů dolarů. Ale kdyby k žádnému forku nedošlo, těch 3,6 milionu Etherea by dnes mělo hodnotu přes sedm miliard dolarů.

Trvalý dopad DAO (17:26)

Je důležité poznamenat, že DAO se nyní běžně označuje jako Genesis DAO, aby se předešlo zmatkům, protože to bylo první DAO, ale rozhodně ne poslední. Navzdory počátečním nezdarům se DAO stávají stále populárnějšími. MakerDAO spravuje stablecoin DAI a protokoly decentralizovaných financí (DeFi), jako je Uniswap se svým tokenem UNI, mají obvykle DAO pro správu. Všechna tato DAO staví na zkušenostech z předchozích projektů, aby vytvořila ještě všestrannější a úspěšnější organizace.

Ale Genesis DAO bylo první svého druhu, vytvořené jako experiment – a to drahý – který na svém vrcholu kontroloval 250 milionů dolarů, neboli 15 % celkové nabídky Etherea. Christoph Jentzsch, hlavní vývojář, očekával, že vybere jen pět milionů dolarů, a později řekl, že lituje, že to nezastropoval. Na tak velký experiment to bylo příliš brzy a rozhodně to bylo příliš velké na to, aby to padlo.

Vytvoření chytrého kontraktu je jako vývoj samořídícího auta – je to velká zodpovědnost vyžadující rozsáhlé testování, aby se předešlo nehodám. I přes tuto novou opatrnost jsou DeFi protokoly stále hackovány o částky přesahující 50 milionů dolarů, některé dokonce i poté, co byly auditovány profesionálními auditorskými firmami. Ale od hacknutí DAO už k žádným dalším záchranám nedošlo. Komunita Etherea je nyní silnější a připravená přejít k ještě větším a ambicióznějším projektům a budovat další generaci digitálních aplikací.

Byla tato stránka užitečná?