Атаки Влада: обзор основных уязвимостей The DAO
28 мая закончилась распродажа токенов The DAO — амбициозного проекта по децентрализованному управлению инвестициями на основе блокчейна Ethereum.
Проект, инициированный командой криптостартапа Slock.it, занимающегося умными замками, собрал более 12 миллионов эфиров, что на сегодняшний день составляет около 165 миллионов американских долларов.
Таким образом, The DAO стал самым успешным краудфандинговым проектом в истории, опередив, в частности, два других крупных проекта на блокчейне: платформу для умных контрактов Ethereum (приложением которой и является The DAO) и децентрализованный кикстартер Waves.
Однако в последние дни краудсейла в сообществе разгорелась дискуссия об уязвимости модели ДАО, заложенной в проекте. Один из кураторов проекта и разработчик Ethereum Влад Замфир совместно с профессором Корнелльского университета Эмин Гюн Сирер и основателем Smartwallet Дино Марком выпустили исследование, с описанием возможных векторов атак на участников децентрализованного траста.
Рассмотренные уязвимости получили неофициальное название в честь одного из авторов отчета «Атаки Влада» (Vlad Attacks).
В чем состоит проблема?
The DAO — это самоуправляемая система, все важные решения в которой принимаются демократическим путем, т.е. голосованием. С учетом размера привлеченных инвестиций, ставки весьма высоки, что, разумеется, не может не заинтересовать злоумышленников. Поэтому сообщество держателей токенов должно быть заинтересовано в устранении любых возможных атак. Редакция Forklog расскажет о наиболее значимых уязвимостях The DAO и некоторых предложенных решениях.
Положительная предвзятость (Affirmative Bias). Одной из уязвимостей исследователи считают стимулы к предвзятости в пользу положительного голосования. Участник ДАО может сразу же отделиться от траста, если он не голосовал за вынесенное предложение. В обратном случае ему придется ждать, пока голосование закончится. Получается так, что участник будет голосовать против критически нежелательного предложения только если он знает, что может как-то повлиять на исход голосования.
«При голосовании в The DAO легко может возникнуть предвзятость: голоса «за» будут отправляться на протяжении всего периода голосования, в то время как стратегические держатели токенов скорее захотят попридержать свои голоса «против», покуда не будут более-менее уверены в успехе. Стратегические держатели, голосующие против, станут это делать только получив информацию об отрицательной реакции остальных на данное предложение, так что сам процесс голосования едва ли сможет быть источником качественной информации о динамике предпочтений держателей токенов. Предпочтения голосующих «за» будут видны с самого начала, однако негативные настроения будут подавляться на протяжении всего голосования. Это довольно проблемный результат для организации, финансируемой за счет краудфандинга, управление которой основано на определении настроений участников посредством голосования», — утверждают исследователи.
Атака преследованием (The Stalking Attack). Второй серьезной проблемой авторы отчета считают возможность преследования участника, который хочет покинуть ДАО вместе со своими деньгами.
С одной стороны, единственный способ забрать деньги — проголосовать всем участникам ДАО за соответствующее предложение. Но такой исход маловероятен, поэтому один или несколько участников могут захотеть разделить ДАО и в рамках уже отдельного траста проголосовать за раздачу слонов. Однако для этого инициаторам выхода необходимо поставить на голосование предложение о разделении, к которому смогут присоединиться и другие участники исходного ДАО.
Уязвимость состоит в том, что недобросовестные участники могут присоединиться к новому ДАО и получить там большинство голосов специально для того, чтобы серьезно ограничить возможность конкретного участника забрать свои деньги. И такой загон в следующее и следующее ДАО может продолжаться бесконечно долго.
По мнению технического директора Slock.it Кристофа Йентча, такая атака не является критической и несет больше рисков для атакующего, чем для атакуемого. Также он описывает метод ухода от преследования:
— первым делом необходимо добавить себя в белый список;
— потом создать несколько (допустим, 10) аккаунтов для голосования в рамках нового ДАО, а на каждый новый аккаунт — отправить минимальное количество токенов, чтобы они могли голосовать;
— создать под каждый аккаунт предложение о разделении ДАО и проголосовать от каждого аккаунта за разные предложения;
— потом, желательно ближе к концу блока, нужно выбрать случайным образом один из аккаунтов, переместить туда все средства и подтвердить разделение ДАО.
Таким образом шансы атакующего предугадать, какой под-ДАО выбрал атакуемый, сильно снижаются, поэтому он сможет присоединиться к атакуемому после разделения ДАО лишь с крайне малой вероятностью.
Суть предложенного Кристофом Йентчем решения описана в соответствующем документе на GitHub:
«Предотвращение атаки происходит достаточно просто. Перед тем, как объявить (т.е. запустить) отделение при помощи команды «splitDAO()» убедитесь, что никто кроме вас не проголосовал за соответствующее предложение. Если кто-то ещё это сделал, создайте новое кураторское предложение и проследите, последовал ли кто-то за вами. Если да, не разделяйте ДАО. В обратном случае, сделайте это в самом последнем возможном блоке», — поясняет автор.
Следующий набор атак прямо связан с возможностью некоторых, зачастую крупных, участников The DAO создавать предложения, которые выгодны ограниченному кругу инвесторов.
Атака из засады (The Ambush Attack). Такая атака может быть применена одним или несколькими крупными держателями токенов The DAO, которые, воспользовавшись описанным выше стимулом других участников не голосовать против нежелательного предложения, захотят проголосовать за выгодное только им предложение большим количеством токенов в последний момент перед завершением голосования. Таким образом, нежелательное предложение пройдет через голосование, из чего будет извлечена польза только злоумышленниками.
Атака на цену токенов (The Token-Value Attack). В случае такой атаки крупный держатель токенов будет создавать условия для того, чтобы, во-первых, участники The DAO не отделялись от изначального ДАО (например, опасаясь «атаки преследованием»), а панически продавали токены на бирже. А во-вторых, чтобы участники рынка неохотно инвестировали в токены The DAO (в частности, создавая невыгодные для остальных участников предложения и продвигая их при помощи «атаки из засады»). Таким образом, цена токенов будет падать, а недобросовестный агент сможет получить выгоду, например, сначала продавая токены, а потом покупая дешевле.
Атака по захвату стоимости нераспределенных фондов (The extraBalance Attack). На момент публикации отчета стоимость фондов The DAO превышала балансовую стоимость всех токенов на 2%. Крупные участники могут спровоцировать остальных отделиться от изначального ДАО и, таким образом, разделить нераспределенные средства, хранимые на счете extraBalance, между собой.
Независимая атака по захвату средств ДАО (The Split Majority Takeover Attack). Такая атака предполагает, что несколько недоброжелателей создают независимые инвестиционные предложения, выгоду от которых получат только они, до тех пор, пока не опустошат фонды The DAO. Такую атаку кураторам достаточно трудно распознать, поскольку такие предложения, на первый взгляд, ничем не отличаются от обычных инвестиционных предложений, выгодных всем участникам.
Атака связыванием конкурентов (The Concurrent Tie-Down Attack). Недобросовестный участник может создать предложение с длительным периодом голосования и мотивировать остальных участников проголосовать за или против этого предложения. После этого он может создать предложение с меньшим сроком голосования, которое затрагивает интересы многих держателей токенов. Участники, таким образом, не смогут покинуть ДАО, разделив его, и будут вынуждены голосовать и по вновь созданному злоумышленником предложению.
Помимо описанных атак, авторы отчета обращают внимание на то, что многие предложения зачастую зависимы друг от друга. Некоторые из них могут конкурировать, а другие наоборот дополнять друг друга, создавая тем самым эффект синергии. Однако этот фактор не учтен в существующей системе голосования за предложения, что добавляет головной боли участникам и не отображает комплексный характер взаимоотношений между разными предложениями.
Предлагаемые решения
Помимо временного моратория, авторы отчета предлагают ввести два новых правила в структуру The DAO:
Льготный период после голосования. В этот период оглашаются результаты голосования по предложению. И если голосование прошло успешно, фонды некоторое время не распределяются в пользу соответствующего проекта, чтобы участники имели возможность изменить свой выбор.
Возможность прямого ухода из ДАО со своими средствами. Это позволит участникам не прибегать к необходимости разделения ДАО для того, чтобы выйти из бизнеса. Так возможности «атак преследованием» и «атак на цену токенов» будут существенно ограничены.
Из-за поднявшейся волны критики идеологи проекта и разработчики Slock.it, предложили держателям токенов ввести должность специалиста по безопасности. Его работой станет отслеживание и отражение возможных атак, «включая социальные, технические и экономические атаки».
По мнению разработчиков, наличие такого специалиста будет эффективным методом обеспечения безопасности ДАО. Forklog следит за развитием событий.
Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!