Распределенное автономное ограбление. Как хакер разорил главный криптовалютный проект года

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

Что случилось с the DAO?

С первого дня своей работы, проект the DAO стал очень популярным как среди инвесторов, так и среди людей, которые хотели реализовать свои идеи, но на это у них не было средств. За первые месяцы работы, проект привлек 50 миллионов долларов, но но но…. Но злоумышленники сумели найти ошибку в коде и сломали его, посредством чего украли эфира на 50 миллионов долларов. Данное событие помешало the DAO раскрыть свой потенциал, и разделило сообщество Эфира на две части. Ведь для того, чтобы вернуть средства вкладчикам, разработчикам проекта the DAO пришлось пойти на беспрецедентный шаг – сделать хард форк. После чего, начался процесс возврата всех средств обратно, а проект так и не смог развиться, хотя перспективы ему рисовали ойойой какие. Кстати, именно из-за хардфорка, мир получил две криптовалюты с похожими названиями Ethereum и Ethereum Classic, более подробно об этом читайте здесь.

Что такое Charity DAO?

После запуска и взлома the DAO, разработчики поняли, что мир нуждается в подобном проекте, и решили сделать схожий с the DAO проект, под названием Charity DAO. Charity DAO – это более узкопрофильный проект, ведь направлен он, исключительно на благотворительность. В наше время, большинство людей не делают пожертвования в благотворительные, так как не доверяют им. Charity DAO может в этом помочь, ведь, как и в the DAO, люди не будут распределять средства вручную, это будет доверено программному коду Charity DAO. Мы надеемся, что разработчики смогут устранить возможность взлома этой сети, и она поможет многим людям.

Редакция нашего блога с нетерпением ждет запуска нового проекта ДАО, ведь в мире, очень много людей, которые попросту нуждаются в нашей с вами поддержке. Если в мире криптовалют, еще существуют понятия, в которых вы не можете разобраться, то пишите их в комментарии, и мы сделаем их описание, простыми словами. С вами был Bitbetnews, до встречи на наших страницах.

The DAO попала на первые полосы газет, собрав 150 миллионов долларов, или почти 12% от общего количества эфира в обращении. Этот нетрадиционный механизм краудфандинга позволяет инвесторам инвестировать собранный эфир (ETH) в конкретные проекты .

Идея и структура ДАО представляют для юристов, потому что судам придется иметь дело с сетью контрактов, имитирующих сущность, а не с законно инкорпорированной сущностью. Закон просто не готов к ДАО, но можно спрогнозировать, что Комиссия по ценным бумагам и биржам (SEC) будет рассматривать токены, приобретенные инвесторами, как ценные бумаги (securities) или инвестиционные контракты, на которые распространяется ее юрисдикция.

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

Что такое ДАО? Что такое The DAO?

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

Отдельные реализации ДАО, такие как The DAO, могут включать нетривиальные схемы распределения прав, закодированные с помощью смарт-контрактов, и имитировать атрибуты и действия бизнес-сущностей или регулируемых финансовых контрактов, включая страховые полисы, фьючерсы, опционы и т. д. The DAO пытается имитировать сущность для краудфандинга, и ее участники голосуют за проекты, на которые ей следует потратить собранные средства.

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

У The DAO три основных функции. Во-первых, она агрегирует активы инвесторов, принимая эфир в обмен на токены DAO. Во-вторых, она инвестирует собранный эфир в проекты, выбираемые по итогам голосования инвесторов. В-третьих, она выплачивает дивиденды держателям токенов DAO.

«Цель The DAO — использовать контролируемый эфир для реализации проектов, обещающих принести прибыль самой ДАО и ее участникам».

Традиционные бизнес-сущности существуют благодаря тому, что законодательство разрешает группам лиц инкорпорироваться для смещения рисков и получения юридической защиты. В обмен на эти привилегии группы лиц, объединяющихся в сущности, обязуются соблюдать финансовые и операционные ограничения, налагаемые государством. В отличие от традиционных бизнес-сущностей, ДАО существуют только на своих блокчейнах и по умолчанию не могут взаимодействовать с внешними финансовыми и/или регуляторными сущностями.

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

Подрядчики делают The DAO предложения вложить средства в тот или иной проект, ясно излагая условия сотрудничества и перспективы получения прибыли. Кураторы проверяют предложения и заносят их в «белый список», не высказывая своего мнения по поводу достоинств или недостатков предложений. Таким образом, The DAO получает из внешнего мира инвесторский капитал, результаты голосования инвесторов, проекты подрядчиков и информацию о том, принят ли конкретный проект кураторами.

Будет ли ДАО признана законом?

В настоящее время ДАО не являются в США признанными субъектами права, что вызывает много вопросов по поводу прав и ответственности ДАО. Например, неясно, будут ли нести ответственность за действия ДАО ее создатели, кураторы, подрядчики или инвесторы. Хотя для ДАО может быть полезно нанять представителя-человека, держатели токенов ДАО могут решить не раскрывать главных действующих лиц.

Если кто-то решит подать против ДАО иск, немедленно возникнет проблема идентификации ответчика. Истец должен будет подтвердить, что данное лицо представляет ДАО, и доказать, что на него распространяется юрисдикция суда. Любая сторона, участвующая в судебном процессе от имени ДАО, скорее всего, захочет аннулировать иск на том основании, что она не является авторизованным представителем ДАО. После этого суд должен будет определить, что такое ДАО с юридической точки зрения.

Эндрю Хинкс (Andrew Hinkes)

17 июня 2016 года неизвестный злоумышленник перекачал на свои счета около трети фондов проекта DAO. Атака продолжалась несколько часов. За это время он успел захватить более 3,6 миллиона эфиров - сумму, эквивалентную примерно 50 миллионам долларов.

Что такое DAO

Когда речь идет о DAO, путаница неизбежна. Помимо проекта DAO (The DAO), который стал жертвой атаки, есть еще и просто DAO - термин, которым обозначают распределенные автономные организации (Distributed Autonomous Organization). Такие организации отличаются от обычных примерно тем же, чем умные контракты от традиционных: и в том и в другом случае люди остаются за кадром. Структуру, цели и внутренние процессы такой организации определяют не ее менеджеры и сотрудники, а программный код.

Самый очевидный пример распределенных автономных организаций - это сами криптовалюты. Они никому не принадлежат и никому не подчиняются. В их деятельности участвуют тысячи человек, но они не контролируют Bitcoin или Ethereum. Никто не контролирует. Устройство и принцип действия криптовалюты зависят не от людей, а от ее протокола. Люди лишь следуют ему.

Все эти качества в полной мере описывают и злополучный проект DAO. Он должен был стать чем-то вроде криптовалютного «Кикстартера» - прозрачного, децентрализованного и свято чтущего волю каждого участника. Проект придумали и реализовали в немецком стартапе Slock.it, который разрабатывает электронные дверные замки. Его основатели надеялись с помощью DAO найти инвестиции под свои идеи.

С технической точки зрения проект DAO представляет собой умный контракт Ethereum. И это очень непростой контракт. Он описывает все аспекты функционирования этой организации. После создания DAO следует стадия первоначального накопления капитала - 27 дней, в течение которых любой желающий может купить токены организации и стать его полноправным участником. Затем начинается работа: желающие выставляют свои идеи на суд публики, а обладатели токенов голосуют. Победители получают финансирование. И голосование, и финансирование, и распределение прибыли происходит автоматически.

Распродажа токенов проекта DAO началась 30 апреля 2016 года. Спустя 27 дней их приобрели более 11 тысяч человек. В результате под управлением единственного умного контракта оказалась сконцентрирована огромная сумма - больше 150 миллионов долларов. Таких денег при помощи краудфандинга не собирал никто и никогда.

В Slock.it определенно не ждали подобного развития событий, но к тому моменту их ожидания и планы уже не играли роли. Судьба 150 миллионов долларов теперь зависела не от них, а от кода контракта.

Распределенное автономное ограбление

Спустя всего три недели после открытия DAO участники сообщества Ethereum растерянно смотрели на уплывающие от них миллионы долларов и ничего не могли поделать. На счет организации одного из участников проекта уходили деньги, которые никак не могли ему принадлежать. При этом придраться было не к чему. Ethereum работал именно так, как должен. Код проекта DAO делал именно то, что в него заложено. Все было правильно, кроме результата.

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

Рекурсивный процесс разделения продолжается до тех пор, пока не упрется в технические ограничения Ethereum. В результате оказывается переведено в 20–30 раз больше средств, чем положено. Другая ошибка в функции withdrawRewardFor позволяет повторять такой трюк столько, сколько потребуется. Организатор атаки проделал его сотни раз.

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

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

Машинерия Ethereum гарантирует, что умные контракты не будут нарушены. Она не дает гарантии, что в них нет ошибок. Более того, само понятие «ошибка» чуждо его логике. Для Ethereum важнее, что разрешено и что запрещено. А это целиком и полностью определяет код контракта. Код контракта DAO пусть непреднамеренно, но разрешает выкачивать чужие миллионы. Следовательно, с точки зрения Ethereum, действия организатора атаки совершенно законны.

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

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

Выхода нет

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

Но умный контракт - это не простая программа. Умный контракт - это контракт, а контракты нельзя просто так взять и поменять. Их заключают для того, чтобы раз и навсегда закрепить условия сделки и обязательства сторон. Они неизменны - в этом весь смысл. Исправления или отмены ошибочного контракта можно добиться через суд, но в Ethereum это по понятной причине невозможно.

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

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

Чем меньше денег оставалось на счетах DAO, тем очевиднее становилось, что простого выхода нет. Ошибку в контракте нельзя исправить - во всяком случае, быстро и без потерь. Деньги тоже не спасти - во всяком случае, быстро и без потерь. Созданная система не приспособлена ни для того ни для другого.

Что делать дальше? Основатели проекта DAO призвали своих сторонников ломать систему. Они опубликовали код, массовое исполнение которого перегрузит сеть Ethereum. DDoS не остановит атаку на DAO, но замедлит ее и даст время на поиск решения.

Экстраординарные меры

Спустя несколько часов в события вмешался создатель Ethereum Виталик Бутерин. Через официальный блог криптовалюты Бутерин предложил провести так называемое мягкое ветвление (soft fork) программного обеспечения Ethereum и заблокировать похищенные деньги.

Продолжение доступно только участникам

Вариант 1. Присоединись к сообществу «сайт», чтобы читать все материалы на сайте

Членство в сообществе в течение указанного срока откроет тебе доступ ко ВСЕМ материалам «Хакера», увеличит личную накопительную скидку и позволит накапливать профессиональный рейтинг Xakep Score!

17 июня 2016 года произошла, пожалуй, самая масштабная атака за всю историю криптоиндустрии — из-за ошибки в коде перспективный и очень популярный в то время проект The DAO лишился более 60 миллионов долларов.

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

Немного предыстории

На заре ICO, то есть всего-то около года назад — 28 мая 2016, закончилась распродажа токенов проекта по децентрализованному управлению инвестициями The DAO, который основала команда стартапа Slock.it.

До поры до времени у The DAO дела шли очень хорошо: и сообщество проект полюбило, и Виталик Бутерин стоял за него горой, и краудсейл прошел, мягко говоря, успешно — собрали более 12 миллионов ETH, что на тот момент составляло около 165 миллионов долларов (сегодня — более 4,3 миллиарда долларов!).

«за последние сутки The DAO вырос в стоимости почти на 16% по отношению к доллару ($ 0,158) и более чем на 5% по отношению к ETH (0.000228)». (Для справки: биткоин тогда стоил 695 долларов).

Что-то пошло не так…

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

В разговоре с Туалем годичной давности ForkLog интересовался тем, насколько оправданы опасения сообщества насчет возможных атак на проект. Оценивая содержание этого текста сейчас, можно сказать, что команда Slock.it отнеслась несерьезно и к возможным уязвимостям, и даже к честному разговору о них.

«Я спокоен по поводу будущего The DAO. Все произошедшие события сделали его самым большим проектом в истории, финансируемым за счет краудфандинга, и по сути самым крупным венчурным проектом. The DAO позволит появиться компаниям, которые в ином случае никогда бы не существовали», — заявил 10 июля 2016 года Стефан Туаль.

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

Рекурсивный вызов и крах The DAO

А примерно в полдень стало известно, в чем причина резкого падения цены токена: , украдено $50 миллионов.

На рынке началась паника. Под горячую руку попали и основатели The DAO, и Виталик Бутерин, и Ethereum. Многие криптоэксперты и члены сообщества хоронили эти проекты прямо в одной могиле. Кульминацией обширной дискуссии вокруг произошедшего стало эпичное появление непосредственно атаковавшего The DAO.

Представим, что после ограбления банка во время разбирательств между полицией и плачущими вкладчиками внезапно появляется человек в маске и говорит: «Спокойно, ребята! Это моих рук дело, но все законно». Вот примерно это и произошло, правда, в онлайн-пространстве: атаковавший , в котором не то что не признавал вины, но и грозил судом в случае, если его лишат «награбленного».

«Я внимательно изучил код the DAO и решил поучаствовать после того, как нашел функцию, при запуске которой разделение вознаграждается дополнительными эфирами. Я задействовал данную функцию и законно получил 3 641 694 эфира. Хочу поблагодарить the DAO за эту награду. (…) Я оставляю за собой право принять любые и все возможные легальные действия против любых соучастников незаконных краж, заморозок или изъятия моих законно полученных токенов ETH, и я продолжаю активно работать с моей юридической фирмой. Все эти соучастники в ближайшее время получат соответствующие уведомления на свои почтовые адреса. Я надеюсь, что это событие станет ценным опытом для сообщества Ethereum, которому я желаю всего наилучшего», - говорилось в письме.

Однако позже эксперты признали это письмо, достойное того, чтобы войти в историю криптовалют, . И тем не менее точка в этом вопросе пока не поставлена. Возможно, в будущем мы узнаем удивительные и никому не известные подробности произошедшего 17 июня 2016 года.

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

Однако окно для создания дочернего ДАО составляло ровно 27 дней, и средства с кошелька все это время нельзя было вывести. Сообщество начало искать пути «восстановления справедливости» и в конце концов остановилось на во всех смыслах Виталика Бутерина.

Утешительные итоги

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

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

  1. Внимательно анализируйте ICO. Важно понимать, что вы покупаете и с какой целью. Жадность и погоня за быстрой наживой рано или поздно приводят к финансовым потерям. Безусловно, даже самые провальные в своей сути криптовалютные проекты в среднесрочной перспективе могут иметь колоссальный спекулятивный потенциал. И если как инвестор вы рассчитываете именно на это, не стоит вкладывать больше денег, чем вы готовы потерять.
  2. Отложенный релиз лучше небезопасного кода. Разработчики The DAO, по всей видимости, не ожидали такого финансового успеха, и это сделало проект привлекательным не только для инвесторов, но и для злоумышленников. Тем не менее, ничто не мешало на некоторое время заморозить проект, ограничив возможность работы с основным контрактом. И только после проведения тщательного тестирования при поддержке сообщества и специалистов по блокчейну и безопасности - запускать основной функционал проекта. То, с чем мы столкнулись в реальности, - непозволительная халатность программистов. В результате репутация отдельных разработчиков пострадала если не окончательно, то очень сильно.
  3. Здесь львы. Идеализм и благие намерения, которыми переполнено криптовалютное сообщество, опьяняют и отвлекают от реального положения дел. В то время как количество новых криптовалют и проектов растет почти экспоненциально, пора обратиться к истории фондовых рынков, чтобы не повторять ошибок прошлого.
  4. Эмоции и паника никогда не приводят к конструктивному решению проблемы.

О том, что произошло после атаки на The DAO, читайте в материале ForkLog, который будет опубликован 20 июля — в день годовщины хардфорка Ethereum.