Протокол Spartan - REKT



Спарта пала.

Брешь в коде позволила атакующему опустошить пул ликвидности SPARTA/WBNB и заработать $30,5 миллионов и 6-ю позицию на доске почета rekt как итог.

Хакер воспользовался ошибкой в логике, которая применялась для расчета долей ликвидности в момент сжигания пользователями своих токенов LP при выводе фондов.

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

Следующие детали взяты из анализа причин, проведенного Peckshield.

  1. Был взят займ на 10K WBNB, который нужно было вернуть на последнем этапе с комиссией 260 WBNB за займ;

  2. Своп WBNB на SPARTA пять раз через проэксплуатированный пул Spartan, каждый раз обменивалось 1,913.172376149853767216 WBNB, чтобы получить 621,865.037751148871481851 SPARTA,

555,430.671213257613862228 SPARTA,

499,085.759047974016386321 SPARTA,

450,888.746328171070956525 SPARTA,

и 409,342.991760515634291439 SPARTA соответственно.

  1. В результате, в сумме 2,536,613.206101067206978364 SPARTA плюс 11,853.332738790033677468 WBNB добавлены в пул, запускается чеканка 933,350.959891510782264802 токенов пула (SPT1-WBNB);

  2. Своп WBNB на SPARTA десять раз через тот же пул, каждый раз обменивалось 1,674.025829131122046314 WBNB, чтобы получить 336,553.226646584413691711 SPARTA,

316,580.407937459884368081 SPARTA,

298,333.47575083824346321 SPARTA,

281,619.23694472865873995 SPARTA,

266,270.782888292437349121 SPARTA,

252,143.313661963544185874 SPARTA,

239,110.715943602161587616 SPARTA,

227,062.743086833745362627 SPARTA,

215,902.679301559370989883 SPARTA,

и 205,545.395265586231012643 SPARTA соответственно,

в итоге получилось 2,639,121.977427448690750716 SPARTA.

  1. Создана инфляция баланса актива в пуле переводом в него 21,632.147355962694186481 WBNB и всех SPARTA из пункта 3, т.e. 2,639,121.977427448690750716 SPARTA.

  2. Сжигание 933,350.959891510782264802 токенов пула, полученных в пункте 2, чтобы вывести ликвидность. Так как баланс актива пула подвержен инфляции, операция сжигания приводит к получению 2,538,199.153113548855179986 SPARTA и 20,694.059368262615067224 WBNB.

Отметьте, что в пункте 2 всего лишь вложено 11,853.332738790033677468 WBNB, что привело к получению прибыли в размере 9K WBNB.

  1. В пул добавлена ликвидность с добавленными активами из пункта 4 вместе с 1,414,010.159908048805295494 токенами пула, которые немедленно сжигаются, чтобы получить 2,643,882.074112804607308497 SPARTA и 21,555.69728926154636986 WBNB.

  2. Описанные выше шаги повторяются, чтобы продолжить опустошать пул от фондов.

  3. Флэш-займ возвращается с комиссией 100,260 WBNB.

Уязвимость возникла из-за того, что функция расчета доли ликвидности calcLiquidityShare() запрашивает текущий баланс, который может быть раздут с целью манипулирования. Правильные расчеты должны применять кэшированный баланс в baseAmountPooled/tokenAmountPooled.

Большая часть фондов атакующего, которые он получил в результате вышеописанного эксплоита, на данный момент находятся в этом кошельке: 0x3b6e.

  • 30.7k WBNB ($18.9M)
  • 4.6M SPARTA ($7.8M в момент взлома)
  • 1.3M BUSD-T ($1.3)
  • 23.2 BTCB ($1.3M)
  • 924k BUSD ($0.9M)

Атакующий использовал 1inch (чтобы обменять все токены на BTCB или BETH), Spartan (чтобы сделать дамп SPARTA), Nerve (чтобы обменять BTCB и BETH на версии Anyswap). Таким образом, ему удалось вывести часть прибыли через Anyswap.

Из-за проскальзывания прибыль уменьшилась на треть:

  • 219.5 BTC ($12.4M)
  • 3311 ETH ($9.7M)

Источник igor igamberdiev

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

Эпоха флэш-займов BSC на своем пике, и это не последний раз, когда мы становимся свидетелями подобной атаки.

$30 миллионов прибыли за всего $66 комиссии - это отличная окупаемость инвестиций. А учитывая, как много разработчиков кинулись копировать голубые фишки Эфириума на BSC, у зорких хакеров точно будет еще много шансов.

Ни CZ, ни Binance еще и слова не сказали по этому поводу, поэтому возникает вопрос, сколько еще таких инцидентов они будут терпеть?

Насколько rekt вам нужно стать, чтобы CZ пришел и спас вас?


Поделиться

REKT представляет собой общественную площадку для анонимных авторов. Мы не несём ответственность за выражаемые точки зрения или контент на этом веб-сайте.

Пожертвование (ETH / ERC20): 0x3C5c2F4bCeC51a36494682f91Dbc6cA7c63B514C

Дисклеймер:

REKT не несет никакой ответственности за любое содержание, размещенное на нашем Веб-сайте или имеющее какое-либо отношение к оказываемым нами Услугам, независимо от того, было ли оно опубликовано или создано Анонимным Автором нашего Веб-сайта или REKT. Не смотря на то, что мы устанавливаем правила поведения и нормы публикаций для Анонимных Авторов, мы не контролируем и не несем ответственность за содержание публикаций Анонимных Авторов, а также за то, чем делятся и что передают Авторы с помощью нашего Сайта и наших Сервисов, и не несем ответственность за любое оскорбительное, неуместное, непристойное, незаконное или спорное содержание, с которым вы можете столкнуться на нашем Веб-сайте и на наших Сервисах. REKT не несет ответственность за поведение, будь то онлайн или офлайн, любого пользователя нашего Веб-сайта или наших Сервисов.