BTC 98447.2$
ETH 2810.23$
Tether (USDT) 1$
Toncoin (TON) 3.89$
telegram vk
telegram vk Х
Russian English
"

Хакер KyberSwap использовал «глюк с бесконечными деньгами» для вывода средств

Дата публикации:24.11.2023, 10:50
1503
1503
Поделись с друзьями!

По словам основателя биржи Ambient Дуга Колкитта в социальных сетях, злоумышленник, выведший из KyberSwap 46 миллионов долларов, для проведения атаки использовал «сложный и тщательно разработанный эксплойт смарт-контракта».

Колкитт назвал этот эксплойт «глюком с бесконечными деньгами». По его словам, злоумышленник воспользовался уникальной реализацией функции концентрированной ликвидности KyberSwap, чтобы «обмануть» контракт, заставив его поверить в то, что у него больше ликвидности, чем на самом деле.

«Закончил предварительное глубокое погружение в эксплойт Kyber и думаю, что теперь я довольно хорошо понимаю, что произошло. Это, пожалуй, самый сложный и тщательно продуманный эксплойт смарт-контракта, который я когда-либо видел», – написал в твиттере Дуг Колкитт (@0xdoug) 23 ноября 2023 г.

Большинство децентрализованных бирж (DEX) предоставляют функцию «концентрированной ликвидности», которая позволяет поставщикам ликвидности устанавливать минимальные и максимальные цены, по которым они будут предлагать покупать или продавать криптовалюту. По словам Колкитта, эту функцию использовал злоумышленник KyberSwap для вывода средств.

Однако этот эксплойт «специфичен для реализации концентрированной ликвидности Kyber и, вероятно, не будет работать на других DEX», — сказал он.

По словам Колкитта, атака на KyberSwap состояла из нескольких эксплойтов против отдельных пулов, причем каждая атака практически идентична другой. Чтобы проиллюстрировать, как это работает, Колкитт рассмотрел эксплоит пула ETH/wstETH в Ethereum. Этот пул содержал Ether (ETH) и Lido Wrapped Staked Ether (wstETH).

Злоумышленник начал с того, что занял 10 000 wstETH (стоимостью 23 миллиона долларов на тот момент) у платформы флэш-кредитов Aave, как показано в данных блокчейна. По словам Колкитта, злоумышленник затем сбросил в пул этих токенов на сумму 6,7 миллиона долларов, в результате чего их цена упала до 0,0000152 ETH за 1 wstETH. В этой ценовой категории не было поставщиков ликвидности, желающих покупать или продавать, поэтому ликвидность должна была быть равна нулю.

Затем злоумышленник внес 3,4 wstETH и предложил купить или продать по ценам от 0,0000146 до 0,0000153, сняв 0,56 wstETH сразу после внесения депозита. Колкитт предположил, что злоумышленник, возможно, забрал 0,56 wstETH, чтобы «обеспечить идеальное совпадение последующих числовых расчетов».

После внесения депозита и вывода средств злоумышленник выполнил второй и третий обмен. Второй своп поднял цену до 0,0157 ETH, что должно было деактивировать ликвидность злоумышленника. Третий своп подтолкнул цену обратно до 0,00001637. Это также вышло за пределы ценового диапазона, установленного собственным порогом ликвидности злоумышленника, поскольку теперь оно было выше его максимальной цены.

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

«В отсутствие числовой ошибки кто-то, делающий это, просто торговал бы туда-сюда, используя свою собственную ликвидность», — заявил Колкитт, добавив, — «и все потоки были бы равны нулю (за вычетом комиссий)».

Однако из-за особенности арифметики, используемой для расчета верхней и нижней границы ценовых диапазонов, протокол не смог удалить ликвидность в одном из первых двух свопов, но также добавил ее обратно во время финального свопа. В результате в пуле произошел «двойной учет ликвидности от исходной позиции LP», что позволило злоумышленнику получить 3911 wstETH за минимальное количество ETH. Хотя злоумышленнику пришлось сбросить 1052 wstETH в ходе первого свопа, чтобы осуществить атаку, он все равно позволил ему получить прибыль в размере 2859 wstETH (6,7 миллиона долларов США по сегодняшней цене) после погашения срочного кредита.

Злоумышленник, судя по всему, повторил этот эксплойт против других пулов KyberSwap в нескольких сетях, в результате чего получил в общей сложности 46 миллионов долларов криптовалютной добычи.

По словам Колкитта, KyberSwap содержал отказоустойчивый механизм в функции ComputeSwapStep, который был предназначен для предотвращения возможности использования этого эксплойта. Однако злоумышленнику удалось сохранить числовые значения, использованные при обмене, за пределами диапазона, который мог бы вызвать срабатывание отказоустойчивости. Как заявил Колкитт:

«Количество охвата» представляло собой верхнюю планку достижения границы тика и было рассчитано как ...22080000, тогда как эксплуататор установил объем свопа ...220799999. Это показывает, насколько тщательно был разработан этот эксплойт. Проверка не удалась»

Колкитт назвал эту атаку «самым сложным и тщательно спроектированным эксплойтом смарт-контракта, который он когда-либо видел».

Как сообщалось ранее, 22 ноября KyberSwap был потерял 46 миллионов долларов в результате эксплоита. Команда обнаружила уязвимость 17 апреля, но в этом инциденте никакие средства не были потеряны. Пользовательский интерфейс биржи также был взломан в сентябре 2022 года, хотя в этом инциденте все пользователи получили компенсацию. 22 ноября злоумышленник сообщил команде, что готов вести переговоры о возврате части средств.

Подписывайся на наш Telegram канал. Не трать время на мониторинг новостей. Только срочные и важные новости

https://t.me/block_chain24