Перейти к основному контенту

Взлом The DAO: история Эфириум Классик

История взлома The DAO в 2016 году и о том, как реакция сообщества привела к созданию Эфириум Классик в виде отдельной цепи.

Date published: 15 декабря 2021 г.

Объясняющее видео от Джуниона, рассказывающее историю взлома The DAO в 2016 году — одного из крупнейших цифровых ограблений в истории криптовалют, и о том, как спорное решение сообщества Эфириума провести форк блокчейна привело к созданию Эфириум Классик.

Эта стенограмма является доступной копией оригинальной стенограммы видео (opens in a new tab), опубликованной Джунионом. Она была слегка отредактирована для удобства чтения.

Обнаружение (0:00)

Понедельник, 13 июня 2016 года. Профессор информатики Корнеллского университета изучает код The DAO — одного из самых амбициозных проектов в криптовалютном пространстве. В течение нескольких месяцев он выступал за приостановку проекта, так как считал, что в нем есть определенные недостатки, которые могут поставить под угрозу все дело. Но сегодня он находит серьезную уязвимость: ошибку в строке 666.

Он опасается, что эта ошибка может позволить хакеру потенциально совершать неограниченное количество снятий средств, как в банкомате. Даже если бы на аккаунте злоумышленника было всего 10 долларов, он смог бы снимать их снова, снова и снова, пока все деньги не закончатся. В The DAO было инвестировано четверть миллиарда долларов, и каждый цент находился под угрозой.

Slock.it, компания, стоящая за The DAO, признает потенциальную уязвимость, но заявляет, что любая атака будет неосуществима, поэтому все средства по-прежнему в безопасности. Они делают коммит на GitHub, поменяв местами две строки кода — исправление, которое будет включено в DAO Framework версии 1.1.

Но как только команда заявила о победе, хакер тайно последовал по их стопам, разрабатывая эксплойт, который использует именно эту ошибку. Наступила пятница, прошло четыре дня, и The DAO только что взломали на сумму 55 миллионов долларов.

Подобно тому, как взлом SWIFT на 81 миллион долларов обнародовал дыры в централизованной банковской индустрии, а атака программы-вымогателя WannaCry выявила критические уязвимости в компьютерных операционных системах, взлом The DAO обнажил раннюю хрупкость безопасности смарт-контрактов в мире, где код диктует все. Это оставило сообщество Эфириума опустошенным, пока они отчаянно пытались восстановить контроль над блокчейном.

Это история одного из крупнейших цифровых ограблений в истории и смелой попытки переписать историю так, чтобы его никогда не было.

Что такое The DAO? (2:00)

Встречайте The DAO — сокращение от децентрализованной автономной организации (DAO). Идея была вдохновлена краудфандингом. Вместо множества фондов для разных проектов должен был появиться один фонд, который управлял бы всеми, и не было лучшего способа сделать это, чем с помощью DAO.

При запуске инвесторы получали 100 токенов DAO за каждый внесенный эфир. Эти токены давали им право на управление протоколом и представляли их долю в The DAO. Владельцы токенов могли вносить предложения — например, вы могли предложить инвестировать один миллион долларов в обмен на 10% долю в компании XYZ.

Как только предложение проходило первоначальную проверку, за него голосовали все остальные инвесторы. В течение этого периода владельцы токенов могли голосовать «за», если считали, что инвестиции принесут положительную ожидаемую ценность, или «против», если считали, что они принесут отрицательную ожидаемую ценность. Они также могли использовать форум, чтобы высказать свое мнение и прочитать мнения других.

Когда период голосования заканчивался и набирался кворум в 20% от всех токенов, The DAO автоматически переводила указанный эфир на смарт-контракт, который представлял предложение. Любой эфир, полученный от этих предложений, затем возвращался в казначейство. Это было похоже на один большой децентрализованный хедж-фонд, созданный для получения прибыли. Идея заключалась в том, что мудрость толпы поможет создать лучшие инвестиционные возможности.

Однако все еще нужен был способ защитить меньшинство от притеснения со стороны большинства. Если группа меньшинства была категорически не согласна с предложением, которое они не могли переголосовать, вместо того чтобы голосовать «против», они могли вызвать функцию разделения (split) и перевести свой эфир из основной The DAO в дочернюю DAO, по сути разделив The DAO надвое. Эта функция разделения будет очень важна позже.

Краудфандинг (4:01)

The DAO стала крупнейшим краудфандинговым проектом в истории, собрав 12,7 миллиона эфиров — на тот момент это стоило 150 миллионов долларов. Это произошло в раннюю эпоху Эфириума, когда проект подвергался огромному количеству хайпа и FOMO (синдрому упущенной выгоды) со стороны инвесторов.

До этого проекты на Эфириуме в основном представляли собой произвольные проверки концепций (proof of concepts), но это был полностью функционирующий проект с огромным потенциалом. Он был полностью защищен от любых взломов, обеспечивался миллионами майнеров по всему миру и был децентрализованным — весь проект состоял из серии смарт-контрактов в Эфириуме.

Это был неизменяемый код, размещенный на самом безопасном компьютере в мире, что обеспечивало ключевые свойства DAO: организации, которая является полностью децентрализованной и автономной. После развертывания контрактов 30 апреля ни одна организация — даже Slock.it — не могла внести изменения в протокол или прекратить его существование. Его код бесчисленное количество раз проверялся различными разработчиками Эфириума и был доступен всем для ознакомления.

Взлом (5:02)

«Одиноко, так одиноко» (Lonely, so lonely) — название предложения The DAO №59. Это просто обычное предложение о разделении, но на самом деле именно с него начинается взлом. После того как хакер подал предложение, наступает стандартный семидневный период обсуждения, к которому может присоединиться любой желающий. Однако к этому разделению никто не присоединяется.

Это стандартная процедура, когда кто-то вызывает разделение самостоятельно, создает дочернюю DAO, а затем создает предложение, которое отправляет весь эфир обратно на его кошелек. Это позволяет пользователю вернуть свои деньги, обеспеченные его токенами DAO. Прошло семь дней, и теперь хакеру разрешено вызвать функцию разделения. Никто ничего не подозревает.

Однако, когда вызывается функция разделения, сообщество осознает нечто тревожное. Эфир утекает из The DAO со скоростью восемь миллионов долларов в час. Сообщество отчаянно пытается понять, что происходит. Похоже, что злоумышленник рекурсивно вызывает функцию разделения — снова, снова и снова, сотни раз.

Помните то исправление ошибки, которое произошло четыре дня назад? Жаль, что нет возможности редактировать код смарт-контракта после его развертывания, поэтому это исправление существовало только на GitHub как часть The DAO 1.1 — совершенно другой DAO, которая находилась в стадии разработки. Это небольшое исправление могло бы предотвратить все это — все, что оно делало, это меняло местами две строки кода, чтобы баланс обновлялся до фактической выплаты.

Но без этого исправления любой мог многократно вызывать функцию для вывода эфира до того, как контракт обновит его баланс. Это как банкомат, который не меняет ваш баланс, пока не выдаст вам деньги. «Могу я снять десять долларов? Подождите, а до этого могу я снять десять долларов? Подождите, а до этого...»

Группа Робин Гуда (6:55)

Владельцы токенов DAO наблюдали, как их инвестиции медленно утекают из основной The DAO в дочернюю DAO, также известную как темная DAO (dark DAO). Кроме того, цена Эфириума мгновенно рухнула с 20 до 15 долларов после этих новостей. Нужно было что-то делать, и единственный способ заключался в том, чтобы опустошить остаток до того, как это сделает хакер. Так началась гонка на опустошение.

На другом конце света, в своей квартире в районе Копакабана в Рио-де-Жанейро, Алекс Ван де Санде просыпается от того, что его телефон разрывается от сообщений в Skype. Он поворачивается к жене и говорит: «Помнишь, я рассказывал тебе о той огромной куче денег, которую невозможно взломать? Ее взломали».

Алекс связался с несколькими другими нераскрытыми разработчиками, и они сформировали группу, которую прозвали Робин Гудом — «белых» хакеров, которые должны были вывести оставшиеся средства и вернуть их законным владельцам. Однако у них не было времени предлагать новое разделение, так как для этого потребовался бы семидневный период голосования.

Вместо этого они обратили свое внимание на Предложение №71, которое должно было завершиться через несколько часов. Они собирались присоединиться к этому разделению и использовать тот же взлом, чтобы перекачать все оставшиеся средства в эту дочернюю DAO. Прошло шесть часов с начала атаки, и вору удалось украсть 30% эфира The DAO. Но по какой-то неизвестной причине атака перестала работать. Транзакции не проходили, и всему этому пришел конец.

Тем временем Алекс только готовился запустить атаку «белых» хакеров, чтобы обезопасить оставшиеся 70% средств. Но внезапно у него пропало подключение к интернету. Когда оставалось всего 30 минут, он в панике позвонил в NET, своему бразильскому интернет-провайдеру, но получил ответ только от роботизированного голоса: «Мы видим, что в вашем районе есть проблема с интернетом». Предложение о разделении завершилось, и он только что упустил окно для проведения атаки Робин Гуда.

На следующее утро Алекс попытался снова собрать группу, чтобы проникнуть в другое предложение о разделении, но остальные были заняты. «Мы чувствовали себя худшими хакерами в истории. Нам помешали плохой интернет и семейные обязательства».

Гонка на опустошение (9:10)

Через четыре дня после первоначальной атаки The DAO снова подверглась нападению. Она опустошалась медленно — по несколько эфиров за раунд — но уже накопила несколько тысяч долларов. Казалось, что это злоумышленник прощупывает почву. В этот момент Робин Гуду нужно было что-то делать.

Они решили проникнуть в Разделение №78, потому что установили личность куратора предложения, и оно скоро заканчивалось. Они связались с несколькими «китами», которые были рады пожертвовать свои токены DAO, что позволило команде получить шесть миллионов токенов. Чем больше токенов было у контракта Робина, тем быстрее он мог выкачивать эфир. Злоумышленник ускорил темп, и к нему присоединились другие атакующие. Но благодаря пожертвованиям Робин Гуд смог их опередить. Это позволило им обезопасить 7,2 миллиона эфиров — 55% от The DAO.

Форк (10:08)

Основная The DAO теперь была опустошена, и все средства были распределены по нескольким дочерним DAO — двумя главными из которых были DAO «белых» хакеров и темная DAO. Но все деньги были заблокированы по времени. Ни одно предложение не могло быть выдвинуто в рамках дочерней DAO до истечения 27-дневного периода ожидания. И даже после этого отправка средств на внешний адрес требовала подачи предложения и ожидания в течение двух недель. По сути, оставался еще 41 день до того, как хакер смог бы обналичить сумму, равную 5% от общего предложения Эфириума.

Но хакеру так и не суждено было прикоснуться к своему Эфириуму. То, что произошло дальше, является одним из самых смелых и противоречивых эпизодов в истории блокчейна. Сообщество решило, что не позволит хакеру победить. Они хотели переписать историю так, чтобы каждая транзакция, связанная со взломом, была отменена, и каждый получил бы свои деньги обратно. Они решили провести форк Эфириума.

Блокчейн похож на список транзакций, который продолжает расти с каждым добытым блоком. Каждая транзакция навсегда укореняется в блокчейне. Но если более 50% майнеров вступят в сговор, они могут ложно изменить блокчейн, переписывая историю так, как им хочется. Обычно это называется атакой 51%. Но в этом форке не было ничего злонамеренного — сообщество лишь возвращало деньги, которые были у них украдены.

Код — это закон (11:48)

Тем не менее, не все были согласны с предложенным форком. Они утверждали, что код — это закон. С этой точки зрения злоумышленник был не столько хакером, сколько умным юристом, который внимательно прочитал условия контракта. Следовательно, никакие средства на самом деле не были украдены, и он должен по праву иметь право на эфир из темной DAO.

Важно отметить, что сам Эфириум на самом деле никогда не был взломан — это был просто плохо написанный смарт-контракт, который подвергся эксплойту. Две разные вещи. Кроме того, они считали, что события, происходящие в блокчейне, являются неизменяемыми и никогда не должны подвергаться вмешательству, независимо от ситуации.

Через день после первоначальной атаки злоумышленник отправил открытое письмо в групповой чат The DAO в Slack, подписанное его приватным ключом:

«К The DAO и сообществу Эфириума: я внимательно изучил код The DAO и по праву забрал 3 миллиона эфиров, и хотел бы поблагодарить The DAO за это вознаграждение. Я разочарован теми, кто характеризует использование этой намеренной функции как "кражу". Я использую эту явно закодированную функцию в соответствии с условиями смарт-контракта. Софтфорк или хардфорк будет равносилен изъятию моего законного и правомерного эфира. Такой форк навсегда и безвозвратно разрушит всякое доверие не только к Эфириуму, но и к сфере смарт-контрактов и технологии блокчейн. Не заблуждайтесь: любой форк, софт или хард, нанесет дальнейший ущерб Эфириуму и разрушит его репутацию и привлекательность».

При дальнейшем рассмотрении люди поняли, что подпись была недействительной, поэтому это письмо было написано лишь кем-то, кто выдавал себя за злоумышленника.

С другой стороны, сторонники утверждали, что «код — это закон» — слишком радикальное заявление, и что последнее слово должно оставаться за людьми посредством социального консенсуса. Хакеру нельзя позволять извлекать выгоду из эксплойта, так как это этически неправильно и, скорее всего, незаконно. Но самое главное, The DAO была просто слишком большой, чтобы позволить ей рухнуть. В ней находилось около 15% от общего предложения эфира.

Эфириум Классик (14:34)

В событии, которое перекликалось с финансовым кризисом 2008 года, разработчики Эфириума спасли The DAO. Виталик Бутерин, создатель и ведущий разработчик Эфириума, не извинялся за то, что настаивал на форке. В одном из интервью он позже сказал: «Некоторые пользователи Биткоина видят в хардфорке в некотором роде нарушение их самых фундаментальных ценностей. Лично я считаю, что эти фундаментальные ценности, доведенные до таких крайностей, глупы».

Эти взгляды преобладали у большинства сообщества Эфириума. Спорное голосование сообщества — где один эфир равен одному голосу — показало 87% поддержки форка. Поэтому на блоке 1 920 000 компьютерные узлы по всему миру обновили свое программное обеспечение и приняли форк. Весь эфир из The DAO и дочерних DAO был переведен на контракт возврата средств.

Но на этом все не заканчивается. Оригинальный блокчейн Эфириума — тот, в котором произошел взлом The DAO — продолжал работать. На самом деле, он рос. Майнеры, выступавшие против форка, продолжали добывать блоки, и транзакции все еще совершались. На следующий день биржа Poloniex провела листинг монеты, и она начала торговаться по 2 доллара за штуку. Эта цепь стала известна как Эфириум Классик — оригинальный, неизмененный блокчейн.

Если вы владели эфиром до форка, теперь у вас был бы один Эфириум и один Эфириум Классик. Если бы вы держали один эфир в The DAO, вы смогли бы вывести один Эфириум из контракта возврата средств. А если бы вы только что взломали The DAO, вы бы сколотили приличное состояние в Эфириум Классик — около семи миллионов долларов.

Наследие The DAO (16:14)

Изначально Эфириум Классик набирал обороты как альтернатива, с сильным сообществом блокчейн-фундаменталистов, которые были не согласны со спасением. Но с тех пор Эфириум Классик не смог завоевать популярность и существует лишь как идея с небольшой полезностью. В то время как Эфириум является домом для тысяч протоколов, в Эфириум Классик есть лишь несколько базовых. Очевидно, что форк победил.

Два месяца спустя Робин Гуд перевел 2,9 миллиона своих Эфириум Классик на Poloniex и продал их все за Эфириум в попытке обрушить цену. 14% было успешно конвертировано, но 86% было заморожено Poloniex и возвращено группе. Робин Гуд создал контракт возврата средств в сети Эфириум Классик для пользователей, пострадавших от взлома The DAO.

Что касается хакера, он ушел с 3,6 миллионами Эфириум Классик — сегодня это стоит 150 миллионов долларов. Но если бы форка не было, эти 3,6 миллиона Эфириума сегодня стоили бы более семи миллиардов долларов.

Долгосрочное влияние The DAO (17:26)

Важно отметить, что The DAO теперь обычно называют Genesis DAO, чтобы избежать путаницы, потому что это была первая DAO, но определенно не последняя. Несмотря на первоначальные неудачи, DAO стали только популярнее. MakerDAO управляет стейблкоином DAI, а протоколы децентрализованные финансы (DeFi), такие как Юнисвоп с его токеном UNI, обычно имеют DAO для управления. Все эти DAO опираются на опыт предыдущих проектов для создания еще более универсальных и успешных организаций.

Но Genesis DAO была первой в своем роде, созданной как эксперимент — дорогостоящий эксперимент — контролирующий 250 миллионов долларов на своем пике, или 15% от общего предложения Эфириума. Кристоф Йенч, ведущий разработчик, ожидал собрать только пять миллионов долларов и позже сказал, что сожалеет о том, что не установил ограничение. Для такого масштабного эксперимента было слишком рано, и он, безусловно, был слишком большим, чтобы позволить ему рухнуть.

Создание смарт-контракта похоже на разработку беспилотного автомобиля — это большая ответственность, требующая тщательного тестирования во избежание аварий. Даже с этой новой осторожностью протоколы DeFi по-прежнему взламывают на суммы свыше 50 миллионов долларов, некоторые даже после аудита профессиональными аудиторскими фирмами. Но со времен взлома The DAO больше не было никаких спасений. Сообщество Эфириума теперь сильнее и готово переходить к еще более крупным и амбициозным проектам, создавая следующее поколение цифровых приложений.

Была ли эта страница полезной?