Взломали как в кино. Хакер украл $120 млн у Balancer, используя ошибку округления из фильма Office Space

Взломали как в кино. Хакер украл $120 млн у Balancer, используя ошибку округления из фильма Office Space

Команда признала ошибку в округлении при пакетных обменах.

image

В начале недели в децентрализованном протоколе Balancer обнаружили и сразу же использовали критическую уязвимость. По оценкам, злоумышленнику удалось вывести криптовалюты примерно на 120 млн долларов, возможно больше. Сначала было непонятно, каким именно образом прошла атака. Теперь команда Balancer опубликовала предварительный разбор и свела все к тому, как в протоколе обрабатывались операции с балансами токенов и как работало округление.

Инцидент сильно удивил рынок DeFi. Balancer считается зрелым проектом. Его много раз проверяли известные аудиторы. К тому же эксплуатируемая версия протокола работает с 2021 года и не считалась проблемной.

Бывший глава Агентства по кибербезопасности и безопасности инфраструктуры США Крис Кребс в эфире CNBC сравнил эту атаку со схемой из фильма Office Space. Там тоже идея в том, чтобы забирать по крошечной доле цента с множества операций. Кребс добавил предположение о том, что при подготовке эксплойта могли использовать искусственный интеллект. По его словам это еще одна любопытная деталь истории.

Если упростить техническую часть, суть проблемы была в ошибке округления внутри кода Balancer. Речь о так называемых пакетных обменах. Это когда несколько обменов разных токенов собираются в одну транзакцию. Это задумано для экономии на комиссии за газ при работе со смарт-контрактами. В одном из вариантов такого обмена, режиме EXACT_OUT, протокол масштабирует числа чтобы точнее считать итоговые суммы. Иногда при этом происходило округление в меньшую сторону. Возникали микроскопические расхождения в балансах. Если проводить много повторяющихся операций и при этом сознательно искажать состояние пула, можно было накапливать эти расхождения в свою пользу. Именно это и сделала атака. Поэтому сравнение с Office Space оказалось уместным. Были и дополнительные приемы, но именно ошибка округления открыла окно для взлома.

Отдельная часть истории связана с тем, как отреагировали блокчейны. Часть сетей не дала хакеру вывести все, что он украл. Они просто заморозили активы. Это идет вразрез с идеей что смарт-контракты работают сами по себе и что действует правило code is law. Но на практике многие сети и протоколы по-прежнему управляются достаточно централизованно и могут вмешиваться примерно так же как это делают обычные финтех-сервисы.

По данным Unchained, сети Polygon и Sonic заблокировали часть активов, связанных с атакой на Balancer, чтобы не позволить им уйти дальше. Сеть Berachain пошла еще дальше и выпустила экстренный хардфорк. Это нужно пострадавшим пользователям чтобы вернуть средства.

Все это напоминает историю с The DAO почти десятилетней давности. Тогда разработчикам Ethereum тоже пришлось вмешиваться в работу сети после крупного взлома. Сейчас видно что индустрия все еще пытается найти баланс. С одной стороны пользователям хотят дать полный контроль над деньгами. С другой стороны при таких атаках без ручного вмешательства вернуть средства почти невозможно. Из-за этого у части наблюдателей возникает ощущение что заявленная децентрализация иногда остается красивой витриной. Особенно если вспомнить недавние перебои в работе облака Amazon Web Services которые тоже показали зависимость криптоинфраструктуры от централизованных сервисов.