Уязвимость в ACryptoS привела к выводу US$ 665 тыс. и закрытию протокола

📋 Краткое содержание
Уязвимость в хранилищах концентрированной ликвидности ACryptoS позволила 135 адресам вывести около US$ 665 тыс. в пяти сетях. Протокол заблокировал новые депозиты, оставил вывод средств доступным и объявил о прекращении работы. Пользователям, чьи средства всё ещё находятся под угрозой, следует вывести их напрямую через официальные каналы.

ACryptoS объявила о прекращении работы после того, как уязвимость в хранилищах концентрированной ликвидности позволила вывести около US$ 665 тыс. Атака затронула 77 из 126 хранилищ в сетях Arbitrum, BNB Chain, Polygon, Base и Optimism в течение 8 ноября.

Согласно разбору инцидента, опубликованному самой ACryptoS, все затронутые хранилища перестали принимать новые депозиты в 16:40 UTC. Вывод средств по-прежнему доступен, однако команда заявила, что не намерена исправлять уязвимость и возобновлять работу продукта. Официальная рекомендация — вывести оставшиеся активы.

Уязвимость позволяла получить слишком много долей хранилища

Проблема заключалась в функции depositMulti, которая использовалась для внесения активов в хранилища на базе Uniswap V3, SushiSwap V3, PancakeSwap v3 и Biswap v3. Контракт не проверял, содержит ли переданный пользователем список значений по одному значению для каждого токена в хранилище.

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

Затем злоумышленник выводил средства и получал соответствующую долю обоих токенов. При воспроизведении атаки на форке Polygon команда обнаружила, что депозит в 10 USDC обеспечивал 66,84% долей хранилища и позволял вывести почти 48,6 тыс. USDT0, а также вернуть практически весь первоначальный объём USDC.

ACryptoS заявила, что манипуляций с ценами в пулах не было.