Эксперты SlowMist рассказали о взломе протокола Balancer
Согласно данным исследователей SlowMist, 22 августа 2023 года разработчики Balancer объявили об обнаружении серьезной уязвимости, затрагивающей несколько пулов V2 Boost. Это касалось 1,4% общего значения заблокированных средств (TVL). Некоторые из них были временно приостановлены, а пользователям предложено вывести свои активы поставщиков ликвидности (LP).
Позднее система MistEye обнаружила подозрительные транзакции, использующие уязвимость Balancer. Приостановка работы пулов оказалась неэффективной и некоторые из них оставались уязвимыми для атак. Исследователи рассказали, что причина крылась в функции BatchSwap. Она обеспечивает атомарные обмены между различными пулами, соединяя выход одного с входом другого (tokenIn и tokenOut) и обменивая USDC на токены BPT.
При этом фактическая передача токенов не происходит. По словам специалистов SlowMist, вместо этого объемы обмена подтверждаются путем записи сумм входящих и исходящих токенов. Таким образом при процессе пакетного обмена были обнаружены 2 уязвимости безопасности.
Первая заключалась в том, что злоумышленники в одностороннем порядке добавляли основные токены, посредством округления их стоимости в меньшую сторону. Тем самым они получили возможность манипулировать курсом обмена внутри соответствующего составного пула.
Вторая проблема: виртуальное предложение рассчитывается путем вычитания баланса пула из токенов BPT. Если функция GiveIn — это токены BPT, то последующая поставка будет вычтена на конкретную сумму. Злоумышленникам нужно использовать BPT в качестве GiveIn и сманипулировать его предложением до 0, а затем выполнить обратный обмен. При этом BPT сработает как функция GiveOut. На этом этапе алгоритм выполнит транзакцию с соотношением почти 1 к 1, что ниже текущего курса линейного пула.
В итоге 1-я уязвимость увеличила обменный курс при конвертации. При этом 2-й баг, во время обратного обмена, снизил его. Воспользовавшись обеими ошибками злоумышленник получил выгоду и вышел из протокола.