В ходе недавней атаки на сеть Эфириума злоумышленнику удалось существенно замедлить работу сети, используя опкод Excodesize; в разгар атаки, время генерации блоков достигало 60 секунд.
Атака не была бесплатной для злоумышленника: стоимость газа, использованного в спам-транзакциях, составляла 4,5–5 долларов в минуту в пересчете по текущему курсу эфира.
Комментируя произошедшее, Виталик Бутерин написал в блоге, что уже готовы изменения в коде клиента, с помощью которых можно будет обрабатывать атакованные блоки существенно быстрее, чем это делается в последнем релизе. Однако, команда хочет быть до конца уверенной, что
1) усовершенствования охватывают все атакованные блоки,
2) сами апдейты не станут источниками уязвимости нехватки памяти,
3) учтены все возможные модификации атаки.
Отвечая на вопрос, «Чего хотел добиться атакующий»?, Бутерин ответил:
«Лично я думаю, это кто-то из тех, кому не нравится наша идеология».
«Мы призываем майнеров увеличить лимит газа до 1.5 миллиона, чтобы приложения и смарт-контракты могли нормально выполняться», – из блога Бутерина.
Одним из поводов к такому обращению стало заявление команды стартапа FirstBlood: краудсейл токенов 1SŦ, который должен был начаться 26 сентября, оказался под угрозой из-за того, что лимит газа был снижен чтобы противостоять атаке – организаторы не могли развернуть смарт-контракт, управляющий продажей токенов.
В то же время, идет активное обсуждение перспективных изменений на уровне протокола, чтобы автоматические балансировать стоимость газа для проблемных опкодов.
В настоящее время Фонд Эфириума рекомендует запускать клиенты geth и Parity со следующими параметрами:
Согласно Бутерину, это увеличит размер кэша, уменьшит количество обращений узлов к диску, и уменьшит газ-лимит в 3 раза, что в свою очередь, во столько же раз уменьшит время обработки блока.
По словам Бутерина, механизм консенсуса не был нарушен (то есть, не произошло форка), все клиенты Эфириума продолжали работу. Атака была, в основном, подавлена к 22 сентября, и к 25 сентября работа сети восстановлена.
В течение ближайшей недели в основных клиентах Эфириума будут реализованы более стабильные способы решения проблемы и риск аналогичных атак будет существенно снижен.
Эти способы включают:
Фонд Эфириума также планирует заменить базу данных leveldb на более оптимизированную версию, возможность глубокой модернизации рассматривает и команда Parity. Однако эти модернизации – дело более отдаленного будущего.
В будущем возможны изменения базового низкоуровневого протокола. В следующем релизе Metropolis была бы полезной функция, увеличивающая стоимость газа для опкодов, которые совершают операции чтения состояния системы, или обращаются к внешним акаунтам.
Повышения стоимости газа до 500 000 минимум, скорее всего будет достаточно. Однако реализовывать выполнение этой функции нужно так, чтобы это не отразилось на работе существующих контрактов. Для реализации этой функции будет достаточно EIP90.
Для реализации предлагаемых действий необходимо будет дополнительно понизить ограничение на максимальное количество байтов, которое может прочитать транзакция; помимо защиты от атак, это снизит размер доказательств Меркла. В качестве побочного эффекта это поднимет уровень безопасности легкого клиента и шардинга.
В целом, атака оказала положительный эффект на сеть. Несмотря на то, что почти все разработчики в момент атаки находились в Шанхае на конференции DevCon-2, меры были приняты максимально быстро: вектор атаки был локализован и последствия минимизированы. В результате, атака стала хорошим стресс-тестом системы.
И последнее: краудсейл FirstBlood (см. выше) все-таки состоялся, так как лимит газа был к этому времени повышен. Менее чем за 20 минут было продано токенов 1SŦ на сумму свыше 5.5 миллиона долларов. Интересно, что синхронно с началом продаж токенов (на одном и том же блоке) снова началась атака спамом транзакций. Атака закончилась сразу с окончанием продаж токенов. В результате, бенефициарами атаки стали пользователи китайской биржи Yunbi: биржа аккумулировала большое количество заявок на покупку 1SŦ и провела их на первых минутах продажи. Всего на заявки Yunbi пришлось более 90% выкупленных токенов. Многие частные инвесторы не успели оформить заявки, из-за замедления транзакций, вызванного этим рецидивом атаки.
Подписывайтесь на новости и их анализ в нашем Telegram канале!