Рекурсивный вызов: The DAO на грани смерти и хардфорк Ethereum
Ethereum Foundation во главе с Виталиком Бутерином пошли на спасение фондов the DAO в пользу инвесторов. Однако, последние будут иметь возможность только вывести средства — похоже, the DAO пришел конец.
Как сообщил Бутерин в записи на блоге проекта, устранение последствий атаки потребует сначала софтфорка, а потом и хардфорка сети Ethereum:
«Сообщество разработчиков предлагает софтфорк, (без отката; ни одна транзакция или блоки не будут «аннулированы»), который сделает так, что любые транзакции, использующие команды call/callcode/delegatecall и исполняющие код с хэшем 0x7278d050619a624f84f51987149ddb439cdaadfba5966f7cfaea7ad44340a4ba (т.е. The DAO и дочерние ДАО) приведут к недействительности транзакции (не только команды, но и транзакции), начиная с блока номер 176000 (точный номер блока, с которого изменения вступят в силу до момента выпуска кода), предотвращая возможность вывода эфиров после 27-дневного окна. После этого будет осуществлен хардфорк, который позволит держателям токенов забрать свои эфиры», — разъяснил ситуацию Бутерин.
Хронология событий
В пятницу 17 июня произошла атака на The DAO — первый децентрализованный венчурный фонд на базе Ethereum. Сообщения об этом появились в официальном блоге проекта The DAO, в slack-сообществах и в социальных сетях. В течение последующих нескольких часов события развивались очень стремительно и драматично.
В официальном блоге the DAO был опубликован предполагаемый план действий для устранения последствий атаки. В частности, пользователям предлагалось осуществить спам атаку на Ethereum-адрес проекта, чтобы приостановить утечку средств.
Монеты ETH плавно перетекали на адрес злоумышленника, и на момент публикации новости баланс контракта превышал 3 641 694 ETH или свыше $64 млн. Однако злоумышленник не сможет вывести монеты из созданной дочерней DAO в ближайшие 27 дней (окно создания дочерней DAO).
https://etherscan.io/address/0x304a554a310C7e546dfe434669C62820b7D83490
Реакция рынка
Токен DAO очень быстро потерял в цене порядка 60%, в какой-то момент упав до 0.00007100 BTC за 1 DAO.
Ethereum также отреагировал на атаку, в определенный момент цена криптовалюты упала ниже отметки в 0.02000000 BTC
В свою очередь Виталик Бутерин в связи с атакой на The DAO призвал руководство криптовалютных бирж приостановить ввод и вывод средств, а также заморозить торги. Реакция не заставила себя ждать, и спустя некоторое время в официальном твиттере биржи Kraken появилось сообщение:
«Вывод средств временно приостановлен до появления отчета от @ethereumproject относительно утечки ETH из The DAO. Средства Kraken в безопасности»
Withdrawals temporarily suspended pending report from the @ethereumproject on The DAO ether leak. Kraken funds safe. https://t.co/dmh6V5NB79
— Kraken Exchange (@krakenfx) June 17, 2016
Ликвидация атаки и конец The DAO
Позже Виталик Бутерин опубликовал подробный пост о произошедшей атаке, в котором рассказал о сути задействованной уязвимости и дальнейших планах сообщества.
На данный момент, утверждает Бутерин, атака успешно идентифицирована. По его словам, атака на The DAO все ещё продолжается с помощью разновидности «рекурсивного вызова». Это позволяет бесконечно снимать средства The DAO и переводить их в дочернее ДАО посредством многократного разделения ДАО, повторно собирая эфиры в рамках одной транзакции. Тем не менее, адрес дочернего ДАО, куда уходят похищенные средства установлен, а у сообщества есть около 27 дней (окно для создания дочернего ДАО, в рамках которого вывести средства невозможно), чтобы устранить проблему.
На изображении ниже показано предложение о разделении, с помощью которого злоумышленник воспользовался уязвимостью.
На текущий момент, по словам Бутерина, майнеры могут спокойно продолжать подтверждение транзакций в нормальном режиме, потом дождаться софтфорка и установить его, если они согласны на такое развитие событий.
Отдельно он отметил, что использованная хакерами уязвимость касается только The DAO:
«Это проблема, которая влияет конкретно на The DAO; Ethereum в полной безопасности», — заявил Бутерин.
Держателей DAO-токенов лидер Ethereum призвал «сидеть смирно и не переживать», а биржи продолжать торги эфиром (не упомянув, однако, о токенах DAO).
Кроме того, Бутерин предостерег создаталей контрактов на Ethereum от создания контрактов на сумму более $10 млн и призвал к осторожности при разработке, чтобы не создать баги, позволяющие многократно снимать средства в рамках одной транзакции. Во избежание подобных багов в будущем сообществу — ориентировочно в течение недели — будут представлены рекомендации по созданию контрактов. Также Бутерин напомнил, что создатели удобных инструментов для разработки безопасных контрактов на Ethereum являются основными кандидатами на получение грантов.
Примечательно, что данная уязвимость была обнаружена примерно неделю назад, и ранее разработчики сообщали об её устранении. Тогда сооснователь Slock.it Стефан Туаль подробно рассказал об особенностях данной уязвимости и анонсировал релиз обновлений, устраняющих её. По всей видимости, что-то пошло не так.
«The DAO должны были больше времени уделить тестированию и работе в тестовой сети, но слишком всё быстро происходит, и сообщество постоянно ждёт продуктов на blockchain «завтра». Стефан [Туаль — прим.ред] все равно молодец. […] The DAO стали второй по значимости организацией, которая рассказала, что такое децентрализованные автономные организации, и своим появлением создала рынок моделей ДАО на платформе Ethereum и её аналогах”, — прокомментировал ситуацию лидер команды разработчиков проекта Aira Сергей Лоншаков.
В связи с успехом рекурсивной атаки было принято решение о вероятном закрытии проекта The DAO и возврате вложенных монет ETH пользователям. The DAO будет переведен в обычный контракт, используя который инвесторы смогут вернуть вложенные в проект монеты ETH.
Несмотря на завершение эксперимента The DAO, такое использование принципа too big to fail со стороны Ethereum Foundation привело ко вздоху облегчения со стороны участников организации, что отображено в заголовке соответствующей записи в официальном блоге:
«Краткое резюме по атаке #theDAO: форки и координация с [Ethereum] Foundation позволят вернуть все похищенные средства. Те же форки позволят передать эфиры из токенов DAO в умный контракт, который содержит только функцию выведения средств. Так как никакие деньги в The DAO не были потрачены и ничего не было украдено, ничего не пропало», — прокомментировал редакции Forklog сооснователь Slock.it Стефан Туаль.
Несмотря на сложившуюся ситуацию, представители Slock.it считают её только временной преградой к успеху концепции ДАО, однако о дальнейших планах сообщать, очевидно, пока не готовы.
Комментарии экспертов
Даниэль Надь, разработчик в проекте Ethereum:
«Суть бага в том, что единовременность (атомарность) вывода средств и уничтожения права голоса была нарушена, и при хитром инициировании раздела [на дочернюю DAO — прим.ред] образовался промежуток, куда можно было впихнуть запуск еще одного раздела. Таким образом, злоумышленники могут вывести все средства из DAO. Медленно, но верно. Этот конкретный контракт DAO — мертв, все вложенные в него эфиры потеряны вкладчиками и достанутся злоумышленнику. Хотя потратить он их сможет только через три недели. Тех, кто не вкладывались в DAO, проблема затронула лишь косвенно, путем влияния на цену эфира. Осталось два важных вопроса: Кто виноват? Что делать?»
Сергей Лоншаков, лидер команды разработчиков проекта Aira:
«Данная атака — хорошее испытание для сообщества и должна отрезвить тех людей, кто думают, что создать ДАО — это просто. The DAO первые, кто сделали на Ethereum, то о чем мы много говорили, как о перспективе — организации, которая имеет запрограммированные правила. Но предусмотреть всего сразу и когда ты первый — практически невозможно, нужно быть Сатоши, наверное. Я уверен, что решение будет найдено, возможно, оно не будет всех устраивать, но оно будет. Хоронить The DAO рано, скорее всего этот прецедент откроет возможности для других команд показать свою модель ДАО на фоне текущих проблем. Так что, мне кажется, всё к лучшему».
Андрей Хаврюченко, hacking distributed systems since 1998:
«Наилучшим, но все равно катастрофическим решением будет хардфорк Ethereum. Ошибка не в Ethereum, а в коде DAO. Попытка хардфорка убьет капитализацию Ethereum быстрее, чем любая катастрофа с DAO. Остановка торгов эфиром и DAO — тоже ошибка. Явно сейчас идут панические продажи, при которых будет украдено тоже немало монет».
Панические настроения в сообществе с одной стороны заставляют инвесторов нервничать и продавать имеющиеся на руках монеты, с другой — открывают большие спекулятивные возможности. Вероятно в ближайшие несколько дней торговля ETH будет идти очень неспокойно. Напомним, что совсем недавно Ethereum установил новый ценовой рекорд — стоимость одной монеты превысила $21.
«Мы инвестировали в данный проект, как и в Ethereum, понимая риски, что подобное может произойти, но нам эта инвестиция была интересна в том числе как эксперимент децентрализованного управления. Жаль, что он так быстро закончился. Что касается инвестиций, все эфиры инвестированные в the DAO будут возвращены, то есть можно будет обменять токены DAO на ETH. Сейчас на Poloniex премия за риск, если вдруг что-то пойдет не так, около 20%. Поэтому те, кто держит эфиры могут подзаработать. Что касаемо самого Ethereum, ликвидация The DAO отразится негативно на его цене, так как проект собрал 14% эфиров, и теперь они снова возвращаются на рынок. Многие инвесторы в связи с увеличением в портфеле ETH (поскольку они поменяют токены DAO обратно на ETH) будут продавать их. Плюс негативный фон также отразится на цене, так как инвесторы будут чуть менее оптимистичны. Долгосрочная рекомендация по Ethereum — buy and hold», — рассказал ForkLog сооснователь Cyber.fund Константин Ломашук.
Уже через несколько часов после начала атаки было заявлено о будущей ликвидации уязвимости посредством софтфорка в спокойном режиме, так как по правилам разделения ДАО злоумышленники не смогут вывести средства в течение 27 дней. При этом, как сообщил Виталик Бутерин, никаких откатов транзакций или блоков не будет. Прежде всего потому, что откат транзакций сделает недействительными доказательства, ведущие к злоумышленнику.
ForkLog продолжает следить за развитием событий.
Toly Kaplan и Eugene Muratov
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!