«Черный четверг» для DeFi: как умелые хакеры вывели $8 млн из MakerDAO на фоне обвала рынка

DeFi 960-min
DeFi 960-min

Обвал рынка 12 марта стал настоящим испытанием для DeFi-сектора и ударил по его слабым местам. Не устоял даже флагман MakerDAO — злоумышленникам удалось вывести из системы свыше $8 млн. О том, какие уроки преподал DeFi «черный четверг», специально для ForkLog рассказал независимый исследователь Андрей Тукманов.

Как обеспечивается стабильность DAI?

MakerDAO — это экосистема из двух токенов: управляющего Maker и стейблкоина DAI. Последний привязан к доллару США в соотношении 1:1 и обеспечен различными цифровыми активами, в основном — Ethereum.

Новый DAI: гонка приоритетности залогов началась

Для получения DAI пользователь вносит залог на специальный смарт-контракт, после чего система выдает ему стейблкоины. При этом залог всегда превышает размер займа (на момент написания — 150%). Если стоимость монет в залоге опускается ниже стоимости займа, начинается аукцион, в рамках которого участники сети, так называемые ликвидаторы, выкупают залог за DAI. После этого система сжигает полученные стейблкоины, уменьшая эмиссию. Такой механизм призван обеспечить привязку к доллару.

Что случилось в «черный четверг»?

Паника на рынке спровоцировала экстремальную нагрузку на сеть Ethereum — существенно выросли транзакционные комиссии.

MakerDAO отслеживает курсы активов с помощью нескольких сторонних источников — «оракулов». Для начала процедуры ликвидации за основу берется усредненная цена, которая публикуется раз в час. Из-за перегруженности Ethereum задержка составила два часа — за это время стоимость ETH упала с $166 до $136.

После обновления усредненной цены множество залогов оказались под угрозой ликвидации, но у ликвидаторов не было достаточно DAI для выкупа всех позиций. Часть из них сознательно не стали покупать стремительно падающий ETH.

Написанная разработчиками MakerDAO система Auction Keeper оказалась не рассчитана на высокие цены на газ. Многие ликвидаторы оказались неспособны выполнять свои функции.

Вакуум заполнил атакующий, которому удалось выиграть несколько аукционов по цене около нуля. Его примеру последовали и другие пользователи. Совокупно они выкупили залоги на $8 млн за копейки, а $4 млн в DAI оказались необеспеченными.

Как ответили разработчики?

Разработчики увеличили длительность аукциона, чтобы дать шанс честным участникам. Однако обновление протокола занимает 24 часа.

Создатели MakerDAO добавили такую задержку для решения проблемы безопасности. Злоумышленник мог заменить смарт-контракты системы на собственные и вывести из MakerDAO деньги. Для этого требовались голосующие токены MKR. Стоимость потенциальной атаки была существенно ниже стоимости заблокированных в системе средств. Задержка позволяет другим участникам отменить решения и вывести средства.

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

Некоторые полагают, что среди них могли быть Coinbase и Circle, поскольку стейблкоин USDC затем добавили в обеспечение DAI. Возможно, участие приняли и инвесторы проекта Paradigm и Dragonlfy, которые ранее инвестировали  $27,5 млн в MakerDAO.

Некоторые регуляторы считают MKR ценной бумагой. Распродажа может привлечь их внимание, а проблемы MakerDAO безусловно отразятся на всем DeFi-секторе.

Генеральная репетиция

14 февраля была совершена транзакция, затронувшая сразу семь DeFi-проектов. Затраты атакующего составили около $8 на комиссию сети, полученная прибыль оценивается в $350 тысяч.

В ходе атаки цена биткоина по отношению к эфиру на бирже Uniswap выросла втрое. Спонсором дампа и главным пострадавшим стал протокол для маржинальной торговли bzx.

Uniswap – это автоматический пул ликвидности, цена на котором рассчитывается по простой формуле и сильно растет на больших объемах.

«Черный четверг» для DeFi: как умелые хакеры вывели $8 млн из MakerDAO на фоне обвала рынка

Совокупный торговый объем на Uniswap за март, данные zumzoom

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

Смарт-контракт купил BTC более чем на $1,5 млн при создании короткой позиции с пятикратным плечом. Разработчики bzx не проверили обеспечение позиции, будучи уверены, что никто в здравом уме не будет рисковать 1300 ETH.

Но задумка атакующего заключалась в манипуляции ценой биткоина на Uniswap. Он продал 112 BTC на 63% дороже рынка, выручив $700 тысяч.

Разбираем атаку

Атакующий использовал новый инструмент flash loan — это мгновенный заем, который возвращается в той же транзакции, в которой был выдан. Если деньги не будут возвращены, контракт автоматически отменит все изменения.

Это дает возможность безопасно выдавать займы без обеспечения. Обычно flash loan используется для арбитража или ликвидаций: покупаешь дешевле, а продаешь дороже. В «черный четверг» flash loan тоже активно использовался для спасения залогов.

«Черный четверг» для DeFi: как умелые хакеры вывели $8 млн из MakerDAO на фоне обвала рынка

Данные Aave

Однако взломщик действовал иначе. Он взял заем на 10 000 ETH ($2,8 млн на тот момент) на платформе dydx и разделил его на две части. Первую часть он направил на bzx для осуществления манипуляции, а вторую использовал для арбитража.

Flash loan позволил атакующему существенно удешевить атаку. Хакеру не нужно было искать большую сумму, и он сэкономил на необходимости отмыть эти деньги. Кроме того, сам заем обошелся фактически бесплатно.

17 февраля после восстановления работы протокол bzx вновь подвергся атаке. На этот раз с помощью flash loan злоумышленник манипулировал ценой стейблкоина sUSD,. Протокол в итоге выдал необеспеченный заем. Ущерб оценили в $650 тысяч.

Как сработали оракулы?

Для расчета залогов в DeFi используют курсы криптовалют, часто подтягиваемые с децентрализованных бирж. Из-за низкой ликвидности на таких площадках котировками легко манипулировать.

Разработчики bzx использовали информацию от агрегатора ликвидности Kyber, но после атаки решили подключиться к сети оракулов Chainlink. В ней участники собирают курсы с различных бирж и записывают в сеть Ethereum. Цены усредняются, чтобы обезопасить систему от ложной информации.

Chainlink на фоне паники на рынке заняла 22% пропускной способности Ethereum и ей пришлось снизить необходимое для консенсуса количество голосов с 21 до 7.

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

Что же делать DeFi-сектору?

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

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

Monkey testing — проверка поведения системы, с которой совершают на первый взгляд бессмысленные действия. Такие проверки помогают открыть новые векторы атак, которые могут стать актуальными с появлением новых схем, таких как flash loan.

DeFi подразумевает коллективное управление. Чем выше уровень децентрализации, тем больше времени требуется на принятие решений.

Некоторые системы можно поставить на паузу, чтобы обезопасить средства. Но любая остановка чревата потерями, когда рынок нестабилен. Многие команды уже изменили лимиты, чтобы затруднить манипуляции.

  • MakerDAO понадобилось 24 часа, чтобы изменить настройки после атаки.
  • Уязвимость в протоколе bzx привела к том, что 16 часов под угрозой находилось более $2 млн.
  • В Compound обновили систему, дав большие права команде разработчиков в случае аварии.
  • В Compound подготовили алгоритм действий на случай аварийной остановки MakerDAO — протокол прекратит использовать курсы с Maker.
  • В dydx повысили пороги для торгов.

Всегда нужно иметь запасной план на случай, если потерь избежать не удалось.

Разработчики bzx после трехнедельной паузы опубликовали пост с описанием атаки и мер по ликвидации последствий. В документе приводятся довольно смелые прогнозы на 265 лет вперед. Текст опубликовали за три дня до падения рынков, возможно оценки придется скорректировать.

Итоги

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

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

Появление таких инструментов как flash loan, вероятно, приведет к введению лимитов и следовательно — необходимости KYC. Однако в DeFi участниками являются и смарт-контракты, поэтому можно скорее говорить о появлении рынка доверия и репутации.

Разработчики основных протоколов постараются наполнить фонды для защиты от будущих атак. Лицензирование участников может стать одним из способов монетизации.

Для принятия решений будут требоваться все больше данных, оракулы будут усложняться и брать на себя функции контроля рисков.

Все это создаст новые вызовы в контексте производительности, и DeFi может мигрировать на решения второго уровня.

Подписывайтесь на новости ForkLog в Telegram: ForkLog Feed — вся лента новостей, ForkLog — самые важные новости и опросы.

Подписывайтесь на ForkLog в социальных сетях

Telegram (основной канал) Discord Instagram
Нашли ошибку в тексте? Выделите ее и нажмите CTRL+ENTER

Рассылки ForkLog: держите руку на пульсе биткоин-индустрии!

*Ежедневная рассылка — краткая сводка наиболее важных новостей предыдущего дня. Чтение занимает не больше двух минут. Выходит в рабочие дни в 06:00 (UTC)
*Еженедельная рассылка — объясняем, кто и как изменил индустрию за неделю. Идеально подходит для тех, кто не успевает за новостным потоком в течение дня. Выходит в пятницу в 16:00 (UTC).

Мы используем файлы cookie для улучшения качества работы.

Пользуясь сайтом, вы соглашаетесь с Политикой приватности.

OK