Кроссчейн биржа Transit Swap - REKT



Работаем по выходным, как обычно...

В воскресенье утром мы получили оповещение о том, что кроссчейновый протокол теряет миллионы.

Прямо как в старые добрые времена.

Протокол Transit Swap потерял $21M из-за уязвимости, которая позволила неизвестному злоумышленнику слить содержимое кошельков, которые ранее дали разрешение на работу своп-контрактов.

Но, к несчастью для хакера, больше $1 миллиона были потеряны при транзитене все MEV-боты в нокауте, как 0xbad на этой неделе.

Команда поставила на паузу работу затронутых контрактов перед тем как объявить об инциденте в Twitter.

Затем они добавили что, благодаря “совместным усилиям команд по обеспечению безопасности из @SlowMist_Team, @Bitrace_Team, и @peckshield,” ключевая информация о хакере, включая его “IP, адрес электронной почты и привязанный ончейн адрес” была раскрыта.

Так как анонимность хакера начала испаряться он, похоже, засомневался. На данный момент вернули свыше 70% от всех украденных фондов.

Поиск уязвимости в непроверенном контракте; старательный декомпилятор или кто-то действует на основе инсайдерской информации?

Несмотря на то, что уязвимость находилась в коде проекта, эта атака была нацелена непосредственно на пользователей через уязвимость в использовании функции transferFrom(). Любой токен, получивший одобрение для торговли на Transit Swap мог быть переведен прямиком из кошелька пользователя на неизвестный адрес эксплоитера.

Первая транзакция атаки была произведена сразу же после 18:30 по UTC, и продолжалась атака приблизительно пол часа до того, как украденные токены обменяли на ETH и BNB.

Адрес эксплоитера на ETH и BSC: 0x75f2aba6a44580d7be2c4e42885d4a1917bffd46:

Уязвимый контракт (отзовите все разрешения в сетях ETH и BSC): 0xed1afc8c4604958c2f38a3408fa63b32e737c428:

Источник: Supremacy Inc., SlowMist

Смарт-контракты проекта не проверены. Однако, их можно декомпилировать, исходя из опубликованного байткода:

После того, как мы поняли логику атаки хакера, мы попытались понять причину уязвимости, но код смарт-контрактов проекта был закрыт. Поэтому мы декомпилировали, и в итоге нашли корневую причину атаки: контролируемая внешним вызовом transferFrom.

Из-за того, что это декопилированный код, он немного непонятен для читателей. Мы можем понять, что varg0 - это адрес токена, varg1, varg2 и varg3 - это параметры откуда, куда и количество функции transferFrom.

0x23b872dd на изображении - это подпись функции transferFrom() в этой функции. Следовательно, функция claimTokens вызывает функцию transferFrom какого-либо адреса, и параметры адреса и функции контролируемы.

Для более подробного объяснения обратитесь к анализу, проведенному SlowMist.

Peckshield также предоставили визуальное резюме действий хакера.

Фонды, которые удалось вернуть, были консолидированы на одном адресе (0xD989f7B4320c6e69ceA3d914444c19AB67D3a35E) в сети ETH и BSC, на нем содержится в общей сложности ~$16.5M в двух чейнах.

Украденные фонды:

На момент написания на BSC-адресе эксплоитера все еще хранится более $3.5M в украденных BNB, а ранее он отправил 2500 BNB ($715 тысяч) в Tornado Cash.

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

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

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

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

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

Дела идут своим чередом.


Поделиться

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

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

Дисклеймер:

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